rubytext 0.0.86 → 0.0.87
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/examples/prog21.rb +1 -1
- data/examples/showme.rb +8 -8
- data/examples/slides +23 -23
- data/lib/color.rb +8 -13
- data/lib/effects.rb +13 -9
- data/lib/menu.rb +11 -4
- data/lib/version.rb +1 -1
- data/lib/window.rb +6 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2a39b4c532ccbd898dc02313b42d209f287066dedd723ac626bdbce565d33ed1
|
4
|
+
data.tar.gz: b0e729eb203af8688c493464bd4f5e0b029a2951e8a70964bb878f99c02c792b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f79b5eba776e61bc8ab656c951e01409e25047298eff671ea197d9f1bde14aec83067042c685780154e66db0fa34ffcee36917bd89c6863b675656d111cd2d03
|
7
|
+
data.tar.gz: 1b8638507d0ba10d4807bd2c7a9724e2a222ca1c22e40de3312c4be3935fd0dd2c013c9d2a64c1dcdede16585a1f35de65adca057d49c10589ec83a76e295685
|
data/examples/prog21.rb
CHANGED
data/examples/showme.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
require 'rubytext'
|
2
|
-
require 'timeout'
|
3
2
|
|
4
3
|
def next_slide
|
5
4
|
RubyText.hide_cursor
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
5
|
+
case @proceed
|
6
|
+
when /\d+/
|
7
|
+
sleep @proceed.to_i
|
8
|
+
when "pause"
|
9
|
+
STDSCR.go @rmax-1-@upward, 0
|
10
|
+
STDSCR.center "Press any key..."
|
11
|
+
getch
|
11
12
|
end
|
12
|
-
rescue Timeout::Error
|
13
13
|
end
|
14
14
|
|
15
15
|
def show_code(prog, upward=0)
|
@@ -48,7 +48,7 @@ RubyText.hide_cursor
|
|
48
48
|
|
49
49
|
check_window
|
50
50
|
|
51
|
-
prog, @upward = ARGV
|
51
|
+
prog, @proceed, @upward = ARGV
|
52
52
|
@upward ||= 0
|
53
53
|
|
54
54
|
show_code(prog, @upward)
|
data/examples/slides
CHANGED
@@ -13,27 +13,27 @@ exit unless rc
|
|
13
13
|
# - convert showme into a method?
|
14
14
|
|
15
15
|
system("ruby showme.rb prog01.rb")
|
16
|
-
system("ruby showme.rb prog02.rb")
|
17
|
-
system("ruby showme.rb prog03.rb")
|
18
|
-
system("ruby showme.rb prog04.rb")
|
19
|
-
system("ruby showme.rb prog05.rb")
|
20
|
-
system("ruby showme.rb prog06.rb")
|
21
|
-
system("ruby showme.rb prog07.rb")
|
22
|
-
system("ruby showme.rb prog08.rb")
|
23
|
-
system("ruby showme.rb prog09.rb")
|
24
|
-
system("ruby showme.rb prog10.rb")
|
25
|
-
system("ruby showme.rb prog12.rb")
|
26
|
-
system("ruby showme.rb prog13.rb")
|
27
|
-
system("ruby showme.rb prog14.rb")
|
28
|
-
system("ruby showme.rb prog15.rb")
|
29
|
-
system("ruby showme.rb prog16.rb")
|
30
|
-
system("ruby showme.rb prog17.rb")
|
31
|
-
system("ruby showme.rb prog18.rb")
|
32
|
-
system("ruby showme.rb prog19.rb")
|
33
|
-
system("ruby showme.rb prog20.rb")
|
34
|
-
system("ruby showme.rb prog21.rb")
|
35
|
-
system("ruby showme.rb prog22.rb 11")
|
36
|
-
system("ruby showme.rb prog23.rb")
|
37
|
-
system("ruby showme.rb prog24.rb")
|
38
|
-
system("ruby showme.rb prog25.rb")
|
16
|
+
system("ruby showme.rb prog02.rb pause")
|
17
|
+
system("ruby showme.rb prog03.rb pause")
|
18
|
+
system("ruby showme.rb prog04.rb pause")
|
19
|
+
system("ruby showme.rb prog05.rb pause")
|
20
|
+
system("ruby showme.rb prog06.rb pause")
|
21
|
+
system("ruby showme.rb prog07.rb pause")
|
22
|
+
system("ruby showme.rb prog08.rb pause")
|
23
|
+
system("ruby showme.rb prog09.rb pause")
|
24
|
+
system("ruby showme.rb prog10.rb pause")
|
25
|
+
system("ruby showme.rb prog12.rb pause")
|
26
|
+
system("ruby showme.rb prog13.rb pause")
|
27
|
+
system("ruby showme.rb prog14.rb pause")
|
28
|
+
system("ruby showme.rb prog15.rb pause")
|
29
|
+
system("ruby showme.rb prog16.rb pause")
|
30
|
+
system("ruby showme.rb prog17.rb pause")
|
31
|
+
system("ruby showme.rb prog18.rb pause")
|
32
|
+
system("ruby showme.rb prog19.rb pause")
|
33
|
+
system("ruby showme.rb prog20.rb pause")
|
34
|
+
system("ruby showme.rb prog21.rb pause")
|
35
|
+
system("ruby showme.rb prog22.rb pause 11")
|
36
|
+
system("ruby showme.rb prog23.rb pause")
|
37
|
+
system("ruby showme.rb prog24.rb pause")
|
38
|
+
system("ruby showme.rb prog25.rb pause")
|
39
39
|
|
data/lib/color.rb
CHANGED
@@ -19,12 +19,6 @@ class RubyText::Color
|
|
19
19
|
def self.pair(fg, bg)
|
20
20
|
nf = index(fg)
|
21
21
|
nb = index(bg)
|
22
|
-
File.open("/tmp/pair.out", "w") do |f|
|
23
|
-
f.puts "fg, bg = #{[fg, bg].inspect}"
|
24
|
-
f.puts "Colors = #{Colors.inspect}"
|
25
|
-
f.puts "index fg = #{nf.inspect}"
|
26
|
-
f.puts "index bg = #{nb.inspect}"
|
27
|
-
end
|
28
22
|
num = 8*nf + nb
|
29
23
|
X.init_pair(num, sym2const(fg), sym2const(bg))
|
30
24
|
num
|
@@ -32,17 +26,18 @@ class RubyText::Color
|
|
32
26
|
end
|
33
27
|
|
34
28
|
class RubyText::Window
|
35
|
-
def self.colorize!(
|
29
|
+
def self.colorize!(cwin, fg, bg)
|
36
30
|
File.open("/tmp/cize.out", "w") do |f|
|
37
31
|
f.puts "colorize: fg, bg = #{[fg, bg].inspect}"
|
38
32
|
end
|
39
33
|
cp = RubyText::Color.pair(fg, bg)
|
40
|
-
|
41
|
-
num =
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
34
|
+
cwin.color_set(cp)
|
35
|
+
num = cwin.maxx * cwin.maxy
|
36
|
+
cwin.setpos 0,0
|
37
|
+
cwin.addstr(' '*num)
|
38
|
+
cwin.setpos 0,0
|
39
|
+
cwin.refresh
|
40
|
+
debug "returning from colorize! call"
|
46
41
|
rescue => err
|
47
42
|
File.open("/tmp/#{__method__}.out", "w") do |f|
|
48
43
|
f.puts err
|
data/lib/effects.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
|
2
2
|
|
3
|
-
def fx(str, *args)
|
4
|
-
eff = RubyText::Effects.new(*args)
|
3
|
+
def fx(str, *args, bg: nil)
|
4
|
+
eff = RubyText::Effects.new(*args, bg: bg)
|
5
5
|
str.define_singleton_method(:effect) { eff }
|
6
6
|
str # must return str
|
7
7
|
end
|
@@ -14,9 +14,11 @@ class RubyText::Effects # dumb name?
|
|
14
14
|
|
15
15
|
Others = %[:show, :hide] # show/hide cursor; more later??
|
16
16
|
|
17
|
-
attr_reader :value, :fg
|
17
|
+
attr_reader :value, :fg, :bg
|
18
|
+
|
19
|
+
# TODO rewrite logic to accommodate color pairs
|
18
20
|
|
19
|
-
def initialize(*args)
|
21
|
+
def initialize(*args, bg: nil)
|
20
22
|
bits = 0
|
21
23
|
@list = args
|
22
24
|
args.each do |arg|
|
@@ -27,21 +29,23 @@ class RubyText::Effects # dumb name?
|
|
27
29
|
@fg = arg # symbol
|
28
30
|
end
|
29
31
|
end
|
32
|
+
@bg = bg || @bg
|
30
33
|
@value = bits
|
31
34
|
end
|
32
35
|
|
33
36
|
def set(win)
|
34
|
-
# Save off current state?
|
35
|
-
|
36
|
-
attr, fg = self.value, self.fg
|
37
|
+
@old_fg, @old_bg = win.fg, win.bg # Save off current state?
|
38
|
+
attr, fg, bg = self.value, self.fg, self.bg
|
37
39
|
win.cwin.attron(attr)
|
38
|
-
|
40
|
+
fg ||= win.fg
|
41
|
+
bg ||= win.bg
|
42
|
+
win.set_colors(fg, bg)
|
39
43
|
end
|
40
44
|
|
41
45
|
def reset(win)
|
42
46
|
attr = self.value
|
43
47
|
win.cwin.attroff(attr)
|
44
|
-
win.set_colors(@old_fg,
|
48
|
+
win.set_colors(@old_fg, @old_bg)
|
45
49
|
end
|
46
50
|
end
|
47
51
|
|
data/lib/menu.rb
CHANGED
@@ -1,23 +1,30 @@
|
|
1
1
|
module RubyText
|
2
2
|
|
3
3
|
def self.menu(win: STDSCR, r: 0, c: 0, items:, curr: 0,
|
4
|
-
fg: White, bg: Blue)
|
4
|
+
title: nil, fg: White, bg: Blue)
|
5
5
|
RubyText.hide_cursor
|
6
6
|
high = items.size + 2
|
7
7
|
wide = items.map(&:length).max + 4
|
8
|
+
tlen = title.length + 6
|
9
|
+
wide = [wide, tlen].max
|
8
10
|
win.saveback(high, wide, r, c)
|
9
|
-
|
11
|
+
mr, mc = r+win.r0+1, c+win.c0+1
|
12
|
+
mwin = RubyText.window(high, wide, r: mr, c: mc,
|
10
13
|
fg: fg, bg: bg)
|
14
|
+
win.go(mr-2, mc-win.c0) { win.print fx("[ #{title} ]", :bold, fg, bg: bg) } unless title.nil?
|
15
|
+
|
11
16
|
X.stdscr.keypad(true)
|
12
17
|
sel = curr
|
13
18
|
max = items.size - 1
|
14
19
|
norm = RubyText::Effects.new(:normal)
|
15
20
|
rev = RubyText::Effects.new(:reverse)
|
16
21
|
loop do
|
22
|
+
RubyText.hide_cursor # FIXME should be unnecessary
|
17
23
|
items.each.with_index do |item, row|
|
18
24
|
mwin.go row, 0
|
19
|
-
style = (sel == row) ?
|
20
|
-
|
25
|
+
style = (sel == row) ? :reverse : :normal
|
26
|
+
label = (" "*3 + item + " "*8)[0..wide-1]
|
27
|
+
mwin.print fx(label, style)
|
21
28
|
end
|
22
29
|
ch = getch
|
23
30
|
case ch
|
data/lib/version.rb
CHANGED
data/lib/window.rb
CHANGED
@@ -7,7 +7,8 @@ class RubyText::Window
|
|
7
7
|
|
8
8
|
# Better to use Window.window IRL
|
9
9
|
|
10
|
-
def initialize(high=nil, wide=nil, r0=1, c0=1, border=false,
|
10
|
+
def initialize(high=nil, wide=nil, r0=1, c0=1, border=false,
|
11
|
+
fg=White, bg=Blue, scroll=false)
|
11
12
|
@wide, @high, @r0, @c0 = wide, high, r0, c0
|
12
13
|
@border, @fg, @bg = border, fg, bg
|
13
14
|
@cwin = X::Window.new(high, wide, r0, c0)
|
@@ -29,12 +30,15 @@ class RubyText::Window
|
|
29
30
|
end
|
30
31
|
|
31
32
|
def self.main(fg: White, bg: Blue, scroll: false)
|
33
|
+
debug "Starting #main..."
|
32
34
|
main_win = X.init_screen
|
33
35
|
X.start_color
|
34
36
|
self.colorize!(main_win, fg, bg)
|
35
37
|
rows, cols = main_win.maxy, main_win.maxx
|
36
|
-
self.make(main_win, rows, cols, 0, 0, border: false,
|
38
|
+
win = self.make(main_win, rows, cols, 0, 0, border: false,
|
37
39
|
fg: fg, bg: bg, scroll: scroll)
|
40
|
+
debug "...started #main"
|
41
|
+
win
|
38
42
|
rescue => err
|
39
43
|
File.open("/tmp/main.out", "w") {|f| f.puts err.inspect; f.puts err.backtrace }
|
40
44
|
end
|