ncumbra 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/lib/umbra/window.rb CHANGED
@@ -197,7 +197,7 @@ module Umbra
197
197
  def getch
198
198
  FFI::NCurses.wtimeout(@pointer, $ncurses_timeout || 1000)
199
199
  c = FFI::NCurses.wgetch(@pointer)
200
- if c == 27
200
+ if c == 27 ## {{{
201
201
 
202
202
  # don't wait for another key
203
203
  FFI::NCurses.nodelay(@pointer, true)
@@ -227,7 +227,7 @@ module Umbra
227
227
  return key
228
228
 
229
229
  end
230
- end
230
+ end ## }}}
231
231
  #FFI::NCurses.nodelay(@pointer, false) # this works but trying out for continueous updates
232
232
  c
233
233
  rescue SystemExit, Interrupt
@@ -236,6 +236,12 @@ module Umbra
236
236
  -1 # is C-c
237
237
  end
238
238
 
239
+ ## Convenience method for a waiting getch
240
+ def getchar
241
+ $ncurses_timeout = -1
242
+ return self.getch
243
+ end
244
+
239
245
  # this works fine for basic, control and function keys
240
246
  def OLDgetch
241
247
  c = FFI::NCurses.wgetch(@pointer)
data/tut/field.rb ADDED
@@ -0,0 +1,72 @@
1
+ #!/usr/bin/env ruby
2
+ # tutorial example with a label and a field
3
+ # 2018-05-25 - 14:00
4
+ require 'umbra'
5
+ require 'umbra/label'
6
+ require 'umbra/field'
7
+
8
+ begin
9
+ include Umbra
10
+ init_curses
11
+ win = Window.new
12
+ ## Create a label on top, spanning the second column
13
+ title = Label.new( :text => "Demo of Fields", :row => 1, :col => 1 , :width => FFI::NCurses.COLS-2,
14
+ :justify => :center, :color_pair => CP_BLACK)
15
+
16
+ form = Form.new win
17
+ form.add_widget title ## register label with form
18
+ row = 3
19
+ col = 5
20
+ ## create another label
21
+ w = Label.new( :text => "Name:", :row => row, :col => col , :width => 20)
22
+ w.color_pair = CP_WHITE
23
+ w.justify = :right
24
+ w.attr = FFI::NCurses::A_BOLD
25
+ form.add_widget w
26
+
27
+ row = 3
28
+ col = 30
29
+ ## create a field
30
+ w = Field.new( :name => "name", :row => row, :col => col , :width => 50)
31
+ w.color_pair = CP_CYAN
32
+ w.attr = FFI::NCurses::A_REVERSE
33
+ w.highlight_color_pair = CP_YELLOW
34
+ w.highlight_attr = REVERSE
35
+ w.null_allowed = true
36
+ w.values = %w{ruby perl python java awk sed rust lua}
37
+ w1 = Field.new( :name => "address", :row => row+1, :col => col , :width => 50)
38
+ w1.color_pair = w.color_pair
39
+ w1.attr = w.attr
40
+ form.add_widget w, w1
41
+
42
+
43
+ ## Create a label and position at the bottom row
44
+ message_label = Label.new({text: "Message comes here C-q to quit",
45
+ :name=>"message_label",:row => win.height-2, :col => 2, :width => -2,
46
+ :color_pair => CP_MAGENTA})
47
+ form.add_widget message_label
48
+
49
+
50
+ form.pack
51
+ form.select_first_field
52
+ win.wrefresh
53
+
54
+ while (ch = win.getkey) != FFI::NCurses::KEY_CTRL_Q
55
+ next if ch == -1
56
+ begin
57
+ form.handle_key ch
58
+ rescue => e
59
+ alert e.to_s
60
+ end
61
+ win.wrefresh
62
+ end
63
+
64
+ rescue => e
65
+ win.destroy if win
66
+ FFI::NCurses.endwin
67
+ puts e.to_s
68
+ puts e.backtrace.join("\n")
69
+ ensure
70
+ win.destroy if win
71
+ FFI::NCurses.endwin
72
+ end
data/tut/hello.rb ADDED
@@ -0,0 +1,17 @@
1
+ require 'umbra'
2
+
3
+ ## Basic hello world program
4
+
5
+ begin
6
+ include Umbra
7
+ init_curses
8
+ win = Window.new
9
+ win.printstring(10,10, "Hello World!");
10
+ win.wrefresh
11
+
12
+ win.getchar
13
+
14
+ ensure
15
+ win.destroy
16
+ FFI::NCurses.endwin
17
+ end
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env ruby
2
+ # 2018-05-24
3
+ require 'umbra'
4
+ require 'umbra/label'
5
+
6
+ begin
7
+ include Umbra
8
+ init_curses
9
+ #$log = create_logger '/dev/null'
10
+ win = Window.new
11
+ title = Label.new( :text => "Demo of Labels", :row => 0, :col => 0 , :width => FFI::NCurses.COLS-1,
12
+ :justify => :center, :color_pair => 0)
13
+
14
+ form = Form.new win
15
+ form.add_widget title
16
+ form.pack
17
+ form.repaint
18
+ win.wrefresh
19
+
20
+ while (ch = win.getkey) != 113
21
+ next if ch == -1
22
+ win.wrefresh
23
+ end
24
+
25
+ ensure
26
+ win.destroy
27
+ FFI::NCurses.endwin
28
+ end
data/tut/labfield.rb ADDED
@@ -0,0 +1,63 @@
1
+ #!/usr/bin/env ruby
2
+ # example showing labeledfield
3
+ # 2018-05-26
4
+ require 'umbra'
5
+ require 'umbra/label'
6
+ require 'umbra/labeledfield'
7
+
8
+ begin
9
+ include Umbra
10
+ init_curses
11
+ win = Window.new
12
+ title = Label.new( :text => "Demo of LabeledFields", :row => 0, :col => 0 , :width => -1,
13
+ :justify => :center, :color_pair => CP_BLACK)
14
+
15
+ form = Form.new win
16
+ form.add_widget title
17
+ labels = ["Name:", "Age:", "Address:","Mobile No.:", "Email Id:","Hobbies:"]
18
+ names = ["name", "age", "address","mobile", "email","hobbies"]
19
+
20
+ row = 3
21
+ col = 30
22
+ names.each_with_index {|lab, ix|
23
+ w = LabeledField.new( :name => lab, :row => row, :col => col , :width => 50, label: labels[ix],
24
+ :label_highlight_attr => BOLD
25
+ )
26
+ row += 2
27
+ w.color_pair = CP_CYAN
28
+ w.attr = FFI::NCurses::A_REVERSE
29
+ w.highlight_color_pair = CP_YELLOW
30
+ w.highlight_attr = REVERSE
31
+ w.null_allowed = true
32
+ form.add_widget w
33
+ }
34
+ message_label = Label.new({text: "Message comes here C-q to quit",
35
+ :name=>"message_label",:row => -2, :col => 2, :width => 60,
36
+ :color_pair => CP_MAGENTA})
37
+ form.add_widget message_label
38
+ form.pack
39
+ form.select_first_field
40
+ win.wrefresh
41
+
42
+ y = x = 1
43
+ while (ch = win.getkey) != FFI::NCurses::KEY_CTRL_Q
44
+ if ch == -1
45
+ message_label.text = Time.now
46
+ form.repaint
47
+ next
48
+ end
49
+ begin
50
+ form.handle_key ch
51
+ rescue => e
52
+ alert(e.to_s)
53
+ end
54
+ win.wrefresh
55
+ end
56
+
57
+ rescue => e
58
+ win.destroy if win
59
+ FFI::NCurses.endwin
60
+ ensure
61
+ win.destroy if win
62
+ FFI::NCurses.endwin
63
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ncumbra
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - kepler
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-05-23 00:00:00.000000000 Z
11
+ date: 2018-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -112,6 +112,10 @@ files:
112
112
  - lib/umbra/version.rb
113
113
  - lib/umbra/widget.rb
114
114
  - lib/umbra/window.rb
115
+ - tut/field.rb
116
+ - tut/hello.rb
117
+ - tut/label_hello.rb
118
+ - tut/labfield.rb
115
119
  - umbra.gemspec
116
120
  homepage: https://github.com/mare-imbrium/umbra
117
121
  licenses: