curses 1.4.1 → 1.4.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 857d0a003f909b9e148855feb1d7b5eca2487aab1d22c544e0fdf560a92293b5
4
- data.tar.gz: 49329a8c35c0e157c5cba591eb317bf9acf2672af16c8e826aa22ab0ada59cda
3
+ metadata.gz: 1dbe3f75b839ed01f58ee7743d9d2e147491255aabc4292d04ddcf00a2eaec25
4
+ data.tar.gz: 057d072c126f7d00f8f23cd6fdb246255f94545af1bdb836648b68903a1f959f
5
5
  SHA512:
6
- metadata.gz: 7330fdebb60f3871c10d74685ea5c7ed0194ba7630d0def5cd65de72a3e32e48df343b290ed7e718a116eae1eeab52b5f32d58a4e16e64db6210da9fea19d99e
7
- data.tar.gz: 77d3c8bcc7183642917311d0cbde1d14f55771b133adb2b7953a052a02672053a5bdc3dd0fc0ab78963383d1e114c9b4534df643be05cb17c2adfdcfca8d7c1a
6
+ metadata.gz: 4bd61ea426ca6a68141099c8f6b734cd9094ade75fb5cb11525f285c41e6bec346e3b163bc0f37e1a29b96857ac1d2430f751f056e28641da7116c46ba458a19
7
+ data.tar.gz: bd3f77e5ff14b8c9aeb86d2e498a66f53d66999f55eb81848cf953946a10f242d906b2047eb8e342f0149a436766c810d53c3c06ee942e69d3ae20068e3c8e14
data/History.md CHANGED
@@ -1,3 +1,10 @@
1
+ ### 1.4.2 / 2021-06-14
2
+
3
+ New features:
4
+
5
+ * Added samples for addch, attron, mouse tracking and colors.
6
+ Pull request #62 by coezbek.
7
+
1
8
  ### 1.4.1 / 2021-05-22
2
9
 
3
10
  Bug fixes:
data/curses.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new { |s|
2
2
  s.name = "curses"
3
- s.version = "1.4.1"
3
+ s.version = "1.4.2"
4
4
  s.author = ["Shugo Maeda", 'Eric Hodel']
5
5
  s.email = ["shugo@ruby-lang.org", 'drbrain@segment7.net']
6
6
  s.homepage = "https://github.com/ruby/curses"
data/sample/addch.rb ADDED
@@ -0,0 +1,16 @@
1
+ require_relative "../lib/curses"
2
+ include Curses
3
+
4
+ init_screen
5
+ begin
6
+ addstr("The following letter A should be BOLD and UNDERLINED by using addch:\n")
7
+ addch('A'.ord | A_BOLD | A_UNDERLINE)
8
+
9
+ addstr("\nIt should look the same as when using attron and addstr:\n")
10
+ attron(A_BOLD | A_UNDERLINE)
11
+ addstr("A")
12
+ getch
13
+
14
+ ensure
15
+ close_screen
16
+ end
@@ -0,0 +1,32 @@
1
+ require "curses"
2
+ include Curses
3
+
4
+ init_screen
5
+ begin
6
+ attrs = {
7
+ A_NORMAL => 'Normal display (no highlight)',
8
+ A_STANDOUT => 'Best highlighting mode of the terminal',
9
+ A_UNDERLINE => 'Underlining',
10
+ A_REVERSE => 'Reverse video',
11
+ A_BLINK => 'Blinking',
12
+ A_DIM => 'Half bright',
13
+ A_BOLD => 'Extra bright or bold',
14
+ A_PROTECT => 'Protected mode',
15
+ A_INVIS => 'Invisible or blank mode',
16
+ A_ALTCHARSET => 'Alternate character set',
17
+ }
18
+
19
+ longest_description = attrs.values.map(&:size).max
20
+ attrs.each { |attribute, description|
21
+
22
+ attrset(A_NORMAL)
23
+ addstr("#{description.ljust(longest_description)}: ")
24
+
25
+ attrset(attribute)
26
+ addstr([*('a'..'z'), *('0'..'9')].join + "\n")
27
+ }
28
+ getch
29
+
30
+ ensure
31
+ close_screen
32
+ end
data/sample/colors.rb ADDED
@@ -0,0 +1,26 @@
1
+ require "curses"
2
+ include Curses
3
+
4
+ begin
5
+ init_screen
6
+
7
+ if !Curses.has_colors?
8
+ addstr "This Terminal does not support colors!"
9
+ else
10
+ start_color
11
+
12
+ addstr "This Terminal supports #{colors} colors.\n"
13
+
14
+ Curses.colors.times { |i|
15
+ Curses.init_pair(i, i, 0)
16
+ attrset(color_pair(i))
17
+ addstr("#{i.to_s.rjust(3)} ")
18
+ addstr("\n") if i == 15 || (i > 16 && (i - 15) % 36 == 0)
19
+ }
20
+ end
21
+
22
+ getch
23
+
24
+ ensure
25
+ close_screen
26
+ end
@@ -0,0 +1,75 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Mouse movement tracking using CSI 1003 and 1006 (SGR). Will print a cursor that moves with the mouse.
4
+ #
5
+
6
+ require "curses"
7
+ include Curses
8
+
9
+ @positions = []
10
+
11
+ def draw_cursor(y, x, button, state)
12
+
13
+ # Keep a trail of 10 previous positions visible on the screen
14
+ if @positions.size >= 10
15
+ y_old, x_old = @positions.shift
16
+ setpos(y_old, x_old)
17
+ addstr(" ")
18
+ end
19
+
20
+ setpos(2, 1)
21
+ addstr("Mouse is at y=#{y.to_s.ljust(3)} x=#{x.to_s.ljust(3)} button=#{button.to_s.ljust(3)} #{'%08b' % button}")
22
+
23
+ setpos(y, x)
24
+ addstr("+")
25
+ @positions << [y, x]
26
+ end
27
+
28
+ init_screen
29
+ crmode
30
+ noecho
31
+ stdscr.box('|', "-")
32
+ setpos(1,1)
33
+ addstr("Please move your mouse. Press 'q' to close.")
34
+
35
+ begin
36
+ # Switch on mouse continous position reporting
37
+ print("\x1b[?1003h")
38
+
39
+ # Also enable SGR extended reporting, because otherwise we can only
40
+ # receive values up to 160x94. Everything else confuses Ruby Curses.
41
+ print("\x1b[?1006h")
42
+
43
+ loop do
44
+ c = get_char
45
+ case c
46
+ when "q"
47
+ return
48
+ when "\e" # ESC
49
+ case get_char
50
+ when '['
51
+ csi = ""
52
+ loop do
53
+ d = get_char
54
+ csi += d
55
+ if d.ord >= 0x40 && d.ord <= 0x7E
56
+ break
57
+ end
58
+ end
59
+ if /<(\d+);(\d+);(\d+)(m|M)/ =~ csi
60
+ button = $1.to_i
61
+ x = $2.to_i
62
+ y = $3.to_i
63
+ state = $4
64
+ draw_cursor(y, x, button, state)
65
+ end
66
+ end
67
+ end
68
+ end
69
+
70
+ ensure
71
+ print("\x1b[?1003l")
72
+ print("\x1b[?1006l")
73
+ close_screen
74
+ end
75
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: curses
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shugo Maeda
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-05-22 00:00:00.000000000 Z
12
+ date: 2021-06-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -64,10 +64,14 @@ files:
64
64
  - ext/curses/depend
65
65
  - ext/curses/extconf.rb
66
66
  - lib/curses.rb
67
+ - sample/addch.rb
68
+ - sample/attr_demo.rb
69
+ - sample/colors.rb
67
70
  - sample/form.rb
68
71
  - sample/hello.rb
69
72
  - sample/menu.rb
70
73
  - sample/mouse.rb
74
+ - sample/mouse_move.rb
71
75
  - sample/rain.rb
72
76
  - sample/view.rb
73
77
  - sample/view2.rb