]> git.immae.eu Git - perso/Immae/Projets/Ruby/Monitor.git/blob - monitor.rb
Customization of window size
[perso/Immae/Projets/Ruby/Monitor.git] / monitor.rb
1 #!/usr/bin/env ruby
2
3 require "ncurses"
4 require_relative 'ini_read'
5 require_relative 'windows'
6 require_relative 'buffer'
7
8 def make_bufwins(sections,size)
9 bufwins = []
10 sections.each { |section_name,section|
11 bufwin = Buff_Win.new(Ncurses.COLS()-size*Ncurses.COLS()/100,
12 size*Ncurses.COLS()/100,
13 section)
14 bufwins.push(bufwin)
15 }
16 return bufwins
17 end
18
19 def update_buffers(bufwins)
20 bufwins.each do |bufwin|
21 bufwin.update()
22 end
23 end
24
25 def redraw_all(list,bufwins,curr_bufwin, size)
26 bufwins.each do |bufwin|
27 bufwin.move_resize(Ncurses.COLS()-size*Ncurses.COLS()/100,size*Ncurses.COLS()/100)
28 end
29 list.resize(Ncurses.LINES(), size*Ncurses.COLS()/100)
30 list.clear()
31 list.print_list()
32 list.refresh()
33 curr_bufwin.refresh()
34 end
35
36
37 inistruct = Ini_read.new()
38 begin
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)
48 Ncurses.init_pair(10, Ncurses::COLOR_WHITE, Ncurses::COLOR_BLACK)
49
50
51 list = List_Win.new(inistruct.sections, inistruct.global['list_size'])
52 bufwins = make_bufwins(inistruct.sections, inistruct.global['list_size'])
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
70 redraw_all(list,bufwins,cur_bufwin, inistruct.global['list_size'])
71 when 18 #ctrl+R
72 cur_bufwin.update(force=true)
73 when Ncurses::KEY_RESIZE
74 redraw_all(list,bufwins,cur_bufwin, inistruct.global['list_size'])
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
101 ensure
102 Ncurses.echo
103 Ncurses.nocbreak
104 Ncurses.nl
105 Ncurses.endwin
106 end