Мигающая строка в приложении curses

В скудной документации по ruby ​​curses я нашел этот метод

A_BLINK
Blinking

See ::attrset

Однако я не знаю, как его использовать.

win1 = Window.new
win1.addstr.a_blink "Blinking" #=> error

Пожалуйста, не вините меня, в Google буквально нет помощи по поводу проклятий. Честно говоря, по крайней мере, не для рубина.


person Starkers    schedule 12.10.2013    source источник
comment
Класс Ruby Curses — это всего лишь оболочка. Вы можете прочитать о концепциях здесь: tldp.org/HOWTO/NCURSES-Programming-HOWTO   -  person Stefan    schedule 13.10.2013


Ответы (1)


Вы можете установить атрибуты с помощью Curses::Window#attrset. Вот пример:

require "curses"
include Curses

init_screen
begin
  attrs = {
    A_NORMAL =>     'Normal display (no highlight)',
    A_STANDOUT =>   'Best highlighting mode of the terminal.',
    A_UNDERLINE =>  'Underlining',
    A_REVERSE =>    'Reverse video',
    A_BLINK =>      'Blinking',
    A_DIM =>        'Half bright',
    A_BOLD =>       'Extra bright or bold',
    A_PROTECT =>    'Protected mode',
    A_INVIS =>      'Invisible or blank mode',
    A_ALTCHARSET => 'Alternate character set',
  }
  attrs.each { |a, s|
    attrset(a)
    addstr("#{s}\n")
  }
  refresh
  getch
ensure
  close_screen
end
person Stefan    schedule 12.10.2013
comment
Действительно хороший ответ, но мигание, похоже, не заставляет строку мигать, как я думал. Как вы думаете, мне придется создавать цикл, чтобы сообщение мигало? - person Starkers; 13.10.2013
comment
Ваш терминал должен поддерживать мигающий текст. Может он просто отключен. - person Stefan; 13.10.2013
comment
Хм, хорошо. Я использую терминал новой установки Ubuntu. Тот факт, что мерцание кажется отключенным по умолчанию, немного раздражает. Считаете ли вы, что создание цикла было бы хорошей практикой? - person Starkers; 13.10.2013
comment
Это похоже на тег <blink>, возможно, есть варианты получше, чтобы выделить важное сообщение :) - person Stefan; 13.10.2013
comment
Да, в самом деле. Всегда так с программированием :D - person Starkers; 14.10.2013