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