ncumbra 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/umbra.rb CHANGED
@@ -4,22 +4,25 @@ require "umbra/window"
4
4
  require "umbra/form"
5
5
 
6
6
  module Umbra
7
+
8
+ def curses
9
+ FFI::NCurses
10
+ end
11
+
7
12
  def alert str, config={}
8
13
  require 'umbra/dialog'
9
- #title = config[:title] || "Alert"
10
- #cp = config[:color_pair] || create_color_pair( COLOR_BLUE, COLOR_WHITE )
11
- #attr = config[:attrib] || NORMAL
12
14
 
13
15
  config[:text] ||= str
14
16
  config[:title] ||= "Alert"
15
17
  config[:window_color_pair] ||= create_color_pair( COLOR_BLUE, COLOR_WHITE )
16
18
  config[:window_attr] ||= NORMAL
17
19
  config[:buttons] ||= ["Ok"]
18
-
20
+
19
21
  #m = Dialog.new text: str, title: title, window_color_pair: cp, window_attr: attr
20
22
  m = Dialog.new config
21
23
  m.run
22
24
  end
25
+
23
26
  # confirmation dialog which prompts message with Ok and Cancel and returns true or false.
24
27
  def confirm str, config={}
25
28
  require 'umbra/dialog'
@@ -29,19 +32,87 @@ module Umbra
29
32
  config[:window_color_pair] ||= create_color_pair( COLOR_BLUE, COLOR_WHITE )
30
33
  config[:window_attr] ||= NORMAL
31
34
  config[:buttons] ||= ["Ok", "Cancel"]
32
-
35
+
33
36
  m = Dialog.new config
34
37
  ret = m.run
35
38
  return ret == 0
36
39
  end
37
40
 
41
+ ## Pop up a dialog with an array, such as an exception
42
+ def textdialog array, config={}
43
+ require 'umbra/messagebox'
44
+ config[:title] ||= "Alert"
45
+ config[:buttons] ||= ["Ok"]
46
+
47
+ mb = MessageBox.new config do
48
+ text array
49
+ end
50
+ mb.run
51
+ end
52
+
38
53
  # view an array in a popup window
39
- def view array, config={}
54
+ def view array, config={}, &block
40
55
  require 'umbra/pad'
41
- title = config[:title] || "Viewer"
42
- cp = config[:color_pair] || create_color_pair( COLOR_BLUE, COLOR_WHITE )
43
- attr = config[:attrib] || NORMAL
44
- m = Pad.new list: array, height: FFI::NCurses.LINES-2, width: FFI::NCurses.COLS-10, title: title, color_pair: cp, attrib: attr
56
+ config[:title] ||= "Viewer"
57
+ config[:color_pair] ||= create_color_pair( COLOR_BLUE, COLOR_WHITE )
58
+ config[:attrib] ||= NORMAL
59
+ config[:list] = array
60
+ config[:height] ||= FFI::NCurses.LINES-2
61
+ config[:width] ||= FFI::NCurses.COLS-10
62
+ #m = Pad.new list: array, height: FFI::NCurses.LINES-2, width: FFI::NCurses.COLS-10, title: title, color_pair: cp, attrib: attr
63
+ m = Pad.new config, &block
45
64
  m.run
46
65
  end
47
- end
66
+
67
+ ## create a logger instance given a path, return the logger
68
+ def create_logger path, config={}
69
+ require 'logger'
70
+ _path = File.open(path, File::WRONLY|File::TRUNC|File::CREAT)
71
+ logg = Logger.new(_path)
72
+ raise "Could not create logger: #{path}" unless logg
73
+ ## if not set, will default to 0 which is debug. Other values are 1 - info, 2 - warn
74
+ logg.level = config[:level] || ENV["UMBRA_LOG_LEVEL"].to_i
75
+ #logg.info "START -- #{$0} log level: #{logg.level}. To change log level, increase UMBRA_LOG_LEVEL in your environment to 1 or 2 or 3."
76
+ return logg
77
+ end
78
+
79
+ ## Trying out a key loop to simplify matters for user. NOT TESTED.
80
+ ## @yield key pressed if block given, else calls form.handle_key(ch).
81
+ def main_loop form, &block
82
+ win = form.window
83
+ form.repaint
84
+ win.wrefresh
85
+ stopping = false
86
+ while true
87
+ catch :close do
88
+ while( ch = win.getkey) != 999
89
+ begin
90
+ if ch == curses::KEY_CTRL_Q
91
+ stopping = true
92
+ break
93
+ end
94
+ if block_given?
95
+ yield ch
96
+ else
97
+ form.handle_key ch
98
+ end
99
+ rescue => err
100
+ if $log
101
+ $log.debug( "loop in umbra.rb handle_key rescue reached ")
102
+ $log.debug( err.to_s)
103
+ $log.debug(err.backtrace.join("\n"))
104
+ end
105
+ textdialog [err.to_s, *err.backtrace], :title => "Exception"
106
+ end
107
+ win.wrefresh
108
+ end
109
+ #stopping = win.fire_close_handler ## TODO next version
110
+ #win.wrefresh
111
+ break if stopping
112
+ end
113
+ break if stopping
114
+ end
115
+ end
116
+
117
+
118
+ end # module
data/umbra.gemspec CHANGED
@@ -9,8 +9,8 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["kepler"]
10
10
  spec.email = ["githubkepler.50s@gishpuppy.com"]
11
11
 
12
- spec.summary = %q{tiny ncurses library for creating simple apps}
13
- spec.description = %q{minimal, provides forms and a few basic widgets}
12
+ spec.summary = %q{tiny ncurses library for creating simple apps. Stripped version of Canis. 2018}
13
+ spec.description = %q{minimal ncurses wrapper/library, provides forms, lists, textareas, tables and a few other basic widgets. Stripped version of canis gem. 2018}
14
14
  spec.homepage = "https://github.com/mare-imbrium/umbra"
15
15
  spec.license = "MIT"
16
16
 
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.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - kepler
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-04-22 00:00:00.000000000 Z
11
+ date: 2018-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,7 +52,8 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: 0.4.0
55
- description: minimal, provides forms and a few basic widgets
55
+ description: minimal ncurses wrapper/library, provides forms, lists, textareas, tables
56
+ and a few other basic widgets. Stripped version of canis gem. 2018
56
57
  email:
57
58
  - githubkepler.50s@gishpuppy.com
58
59
  executables: []
@@ -60,6 +61,7 @@ extensions: []
60
61
  extra_rdoc_files: []
61
62
  files:
62
63
  - ".gitignore"
64
+ - CHANGELOG
63
65
  - Gemfile
64
66
  - LICENSE
65
67
  - README.md
@@ -67,6 +69,10 @@ files:
67
69
  - Rakefile
68
70
  - bin/console
69
71
  - bin/setup
72
+ - examples/data/atp_matches_2017.csv
73
+ - examples/data/atp_matches_2018.csv
74
+ - examples/data/import.sh
75
+ - examples/data/schema.txt
70
76
  - examples/ex1.rb
71
77
  - examples/ex2.rb
72
78
  - examples/ex21.rb
@@ -75,7 +81,11 @@ files:
75
81
  - examples/ex5.rb
76
82
  - examples/exbox.rb
77
83
  - examples/exm1.rb
84
+ - examples/extab2.rb
85
+ - examples/extab3.rb
86
+ - examples/extabular.rb
78
87
  - examples/keys.rb
88
+ - examples/tasks.csv
79
89
  - examples/tt.rb
80
90
  - lib/umbra.rb
81
91
  - lib/umbra/box.rb
@@ -92,8 +102,11 @@ files:
92
102
  - lib/umbra/listbox.rb
93
103
  - lib/umbra/menu.rb
94
104
  - lib/umbra/messagebox.rb
105
+ - lib/umbra/multiline.rb
95
106
  - lib/umbra/pad.rb
96
107
  - lib/umbra/radiobutton.rb
108
+ - lib/umbra/table.rb
109
+ - lib/umbra/tabular.rb
97
110
  - lib/umbra/textbox.rb
98
111
  - lib/umbra/togglebutton.rb
99
112
  - lib/umbra/version.rb
@@ -123,5 +136,6 @@ rubyforge_project:
123
136
  rubygems_version: 2.7.6
124
137
  signing_key:
125
138
  specification_version: 4
126
- summary: tiny ncurses library for creating simple apps
139
+ summary: tiny ncurses library for creating simple apps. Stripped version of Canis.
140
+ 2018
127
141
  test_files: []