]> git.immae.eu Git - perso/Immae/Projets/Ruby/Monitor.git/blame - monitor.rb
Customization of window size
[perso/Immae/Projets/Ruby/Monitor.git] / monitor.rb
CommitLineData
8b6154e9
I
1#!/usr/bin/env ruby
2
8b6154e9 3require "ncurses"
332497b1 4require_relative 'ini_read'
7a1b7702 5require_relative 'windows'
332497b1 6require_relative 'buffer'
8b6154e9 7
31d11931 8def make_bufwins(sections,size)
8b6154e9 9 bufwins = []
332497b1 10 sections.each { |section_name,section|
31d11931
I
11 bufwin = Buff_Win.new(Ncurses.COLS()-size*Ncurses.COLS()/100,
12 size*Ncurses.COLS()/100,
332497b1 13 section)
8b6154e9 14 bufwins.push(bufwin)
332497b1 15 }
8b6154e9
I
16 return bufwins
17end
18
19def update_buffers(bufwins)
20 bufwins.each do |bufwin|
21 bufwin.update()
22 end
23end
24
31d11931 25def redraw_all(list,bufwins,curr_bufwin, size)
8b6154e9 26 bufwins.each do |bufwin|
31d11931 27 bufwin.move_resize(Ncurses.COLS()-size*Ncurses.COLS()/100,size*Ncurses.COLS()/100)
8b6154e9 28 end
31d11931 29 list.resize(Ncurses.LINES(), size*Ncurses.COLS()/100)
8b6154e9
I
30 list.clear()
31 list.print_list()
32 list.refresh()
33 curr_bufwin.refresh()
34end
cfddfd90
I
35
36
332497b1 37inistruct = Ini_read.new()
8b6154e9
I
38begin
39 # initialize ncurses
40 Ncurses.initscr
41 Ncurses.start_color
42 Ncurses.cbreak # provide unbuffered input
43 Ncurses.noecho # turn off input echoing
44 #Ncurses.nonl # turn off newline translation
45 #Ncurses.stdscr.intrflush(false) # turn off flush-on-interrupt
46 Ncurses.stdscr.keypad(true) # turn on keypad mode
47 Ncurses.init_pair(1, Ncurses::COLOR_RED, Ncurses::COLOR_BLACK)
9b96f7cb 48 Ncurses.init_pair(10, Ncurses::COLOR_WHITE, Ncurses::COLOR_BLACK)
8b6154e9
I
49
50
31d11931
I
51 list = List_Win.new(inistruct.sections, inistruct.global['list_size'])
52 bufwins = make_bufwins(inistruct.sections, inistruct.global['list_size'])
8b6154e9
I
53 entry = 0
54 cur_bufwin = bufwins[entry]
55 cur_bufwin.show_win()
56 list.print_list()
57 while(ch = list.getch()) do
58 case(ch)
59 when "n".ord
60 entry = (entry +1) % bufwins.length
61 cur_bufwin = bufwins[entry]
62 cur_bufwin.show_win()
63 list.print_list(entry=entry)
64 when "p".ord
65 entry = (entry -1) % bufwins.length
66 cur_bufwin = bufwins[entry]
67 cur_bufwin.show_win()
68 list.print_list(entry=entry)
69 when 12 #ctrl+L
31d11931 70 redraw_all(list,bufwins,cur_bufwin, inistruct.global['list_size'])
9b96f7cb
I
71 when 18 #ctrl+R
72 cur_bufwin.update(force=true)
8b6154e9 73 when Ncurses::KEY_RESIZE
31d11931 74 redraw_all(list,bufwins,cur_bufwin, inistruct.global['list_size'])
8b6154e9
I
75 when Ncurses::KEY_LEFT
76 cur_bufwin.hscroll(scroll=-1)
77 when Ncurses::KEY_RIGHT
78 cur_bufwin.hscroll(scroll=1)
79 when Ncurses::KEY_DOWN
80 cur_bufwin.scroll(scroll=-1)
81 when Ncurses::KEY_UP
82 cur_bufwin.scroll(scroll=1)
83 when Ncurses::KEY_NPAGE
84 cur_bufwin.scroll(scroll=0,goto=nil,fact=-0.75)
85 when Ncurses::KEY_PPAGE
86 cur_bufwin.scroll(scroll=0,goto=nil,fact=0.75)
87 when Ncurses::KEY_HOME
88 cur_bufwin.scroll(scroll=0,goto=1.0)
89 when Ncurses::KEY_END
90 cur_bufwin.scroll(scroll=0,goto=0.0)
91 when Ncurses::ERR
92 update_buffers(bufwins)
93 cur_bufwin.show_win()
94 when "q".ord
95 break
96 else
97 next
98 end
99 end
100
101ensure
102 Ncurses.echo
103 Ncurses.nocbreak
104 Ncurses.nl
105 Ncurses.endwin
106end