Как создать топовый пользовательский интерфейс в Ruby - PullRequest
0 голосов
/ 19 мая 2009

Я хочу создать приложение с текстовым интерфейсом, похожим на команду Linux top в Ruby. Какие инструментарии и / или методы можно использовать для создания пользовательского интерфейса? В частности, я хочу область окна консоли, которая постоянно обновляется, и возможность нажимать клавиши для управления дисплеем.

Ответы [ 3 ]

2 голосов
/ 19 мая 2009

Интерфейс терминала см. http://ncurses -ruby.berlios.de /

1 голос
/ 19 мая 2009

Ncurses отлично подходит для консольных приложений, и вы можете найти для него привязки для многих языков (или просто использовать сценарии оболочки). Есть даже проклятый гтк (http://zemljanka.sourceforge.net/cursed/), хотя я думаю, что работа над ним прекратилась довольно давно.

Вы не упомянули свою платформу, но для OS / X есть отличное небольшое приложение под названием Geektool (http://projects.tynsoe.org/en/geektool/)), которое позволяет вам выводить сценарии на рабочий стол. Я использую небольшой скрипт ruby ​​для генерации моего список топ процессов:

puts %x{uptime}

IO.popen("ps aruxl") { |readme|
    pslist = readme.to_a
    pslist.shift # remove header line
    pslist.each_with_index { |i,index|
      ps = i.split
      psh = { user: ps[0], pid: ps[1], pcpu: ps[2], pmem: ps[3],
              vsz: ps[4], rss: ps[5], tty: ps[6], stat: ps[7],
              time: ps[8], uid: ps[9], ppid: ps[10], cpu: ps[11], pri: ps[12], 
              nice: ps[13], wchan: ps[14], cmd: ps[16..ps.size].join(" ") }
      printf("%-6s %-6s %-6s %s", "PID:", "%CPU:", "%Mem", "Command\n") if index == 0
      printf("%-6d %-6.1f %-6.1f %s\n", 
        psh[:pid].to_i, psh[:pcpu].to_f, psh[:pmem].to_f, psh[:cmd]) if index < 10

    }

}

(Возможно, это могло бы быть и лучше, но это был первый сценарий ruby, который я когда-либо писал, и, поскольку он работает, я никогда не пересматривал его, чтобы улучшить его - и он не требует ввода. В любом случае, это может помочь дать вам некоторые идеи)

0 голосов
/ 20 мая 2009

есть stfl , но я не знаю, поддерживаются ли рубиновые привязки. ncurses, вероятно, ваш лучший выбор.

...