reterm 0.5.0 → 0.5.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4a718fe1f9ad7dbe389aaba371d9456c88957cbb
4
- data.tar.gz: 1deb434bf5d7296cbcf7c2dd12a277490241ddec
3
+ metadata.gz: 322cb2050b47800401185435691f5b5e79d9a9d3
4
+ data.tar.gz: 010ddff147de71d7a7163ab3627a05162b39e785
5
5
  SHA512:
6
- metadata.gz: caeaaef04e95b928996a7e11fb49478a3b6a4365a3ede393fe6f434f24ca562e9a477a4cdfedb6a15ed44d65fc5b6bd8df754e6cbd92dc245dc8fa2b920fa1eb
7
- data.tar.gz: d98622a223979d12bdc27c50df65ecfdd728d455fa2d2524022eb1d3cf734f619c889e9252fcb9d5dc6d30916b062b8c25a000ffc3eace21f1ee0d26040b9d80
6
+ metadata.gz: 94489d9e2e1336538ea9605d82bd37ca1dfc4ea322ec382b1f5376ced1d0c631d0997a284f8799f24391ba1ca427c6c37f9ec8a054ce5e86b8ff6add06b6e1e0
7
+ data.tar.gz: 77f4e71b0ca2c0eb005ecb17f6bc5e85c94bf5a8339686fec4bab6e664c6ac57f71b2978c60620c4829fe23b8763a30c40dcbfd7151cc519b8cda33c4e54d753
@@ -26,18 +26,19 @@ module RETerm
26
26
 
27
27
  err = nil
28
28
 
29
+ min = opts[:min_size]
30
+
29
31
  begin
30
- Terminal.load # XXX: not sure why but loading terminal
31
- # info after changing terminal settings via
32
- # ncurses seems to corrupt the terminal
33
- # state to the point it cannot be restored
34
- # without a 'reset' (see below).
35
- # So just preload terminal info here.
32
+ # XXX: must load terminal info before changing terminal settings
33
+ # (else causes crash... not sure why)
34
+ # But we also check min dimensions here
35
+ Terminal.load(min)
36
36
 
37
37
  # shorten up the esc delay time
38
38
  ENV["ESCDELAY"] = 100.to_s
39
39
 
40
40
  stdscr = Ncurses::initscr
41
+ initialized = true
41
42
  Ncurses::start_color
42
43
  Ncurses::noecho
43
44
  Ncurses::cbreak
@@ -56,10 +57,10 @@ module RETerm
56
57
 
57
58
  ensure
58
59
  stop_track_resize
59
- Ncurses.curs_set(1)
60
+ Ncurses.curs_set(1) if !!initialized
60
61
  Window.top.each { |w| w.finalize! }
61
62
  CDK::SCREEN.endCDK if cdk_enabled?
62
- Ncurses.endwin
63
+ Ncurses.endwin if !!initialized
63
64
  #`reset -Q` # XXX only way to guarantee a full reset (see above)
64
65
  end
65
66
 
@@ -95,7 +96,7 @@ module RETerm
95
96
  Window.top.each { |w| w.noutrefresh }
96
97
  end
97
98
 
98
- Ncurses::Panel.update_panels
99
+ #Ncurses::Panel.update_panels
99
100
  Ncurses.doupdate
100
101
  end
101
102
 
@@ -20,6 +20,10 @@ module RETerm
20
20
  raise "NotImplemented"
21
21
  end
22
22
 
23
+ def init?
24
+ !!@component
25
+ end
26
+
23
27
  # Return completely initialized CDK component
24
28
  def component
25
29
  enable_cdk!
@@ -2,6 +2,11 @@ module RETerm
2
2
  # Seconds between terminal size syncs
3
3
  RESIZE_TIME = 0.2
4
4
 
5
+ # Set the global callback to be invoked on resize
6
+ def on_resize(&bl)
7
+ @on_resize = bl
8
+ end
9
+
5
10
  # Internal helper to track size of terminal.
6
11
  # This is a simple mechanism that launches a
7
12
  # worker thread to periodically poll terminal size.
@@ -13,7 +18,13 @@ module RETerm
13
18
  while @track_resize
14
19
  Terminal.reset!
15
20
  t = Terminal.dimensions
16
- Terminal.resize! if t != d
21
+
22
+ if t != d && !shutdown?
23
+ Terminal.resize!
24
+ @on_resize.call if !!@on_resize
25
+ end
26
+
27
+ d = Terminal.dimensions
17
28
  sleep(RESIZE_TIME)
18
29
  end
19
30
  }
@@ -11,8 +11,11 @@ module RETerm
11
11
  @dimensions ||= TermInfo.screen_size
12
12
  end
13
13
 
14
- def self.load
14
+ def self.load(min = nil)
15
15
  dimensions
16
+ raise ArgumentError, "Terminal too Small - min: #{min}" if min &&
17
+ (cols < min[:cols] ||
18
+ rows < min[:rows])
16
19
  nil
17
20
  end
18
21
 
@@ -1,3 +1,3 @@
1
1
  module RETerm
2
- VERSION = "0.5.0"
2
+ VERSION = "0.5.2"
3
3
  end # module RETerm
@@ -166,11 +166,13 @@ module RETerm
166
166
  @win = Ncurses::WINDOW.new(@rows, @cols, @y, @x)
167
167
  end
168
168
 
169
+ raise ArgumentError, "could not create window" if !@win
170
+
169
171
  self.component = component if !!component
170
172
 
171
173
  Ncurses::keypad(@win, true)
172
174
 
173
- @win.timeout(SYNC_TIMEOUT) if @win && sync_enabled? # XXX
175
+ @win.timeout(SYNC_TIMEOUT) if sync_enabled? # XXX
174
176
 
175
177
  @expand = !!args[:expand]
176
178
  @must_expand = !!args[:must_expand]
@@ -321,7 +323,7 @@ module RETerm
321
323
  @children.delete(child)
322
324
  @@registry.delete(child)
323
325
  child.finalize!
324
- child.win.delwin
326
+ child.win.delwin if !!child.win
325
327
  end
326
328
 
327
329
  # Return child containing specified screen coordiantes, else nil
@@ -377,7 +379,7 @@ module RETerm
377
379
 
378
380
  @win.werase if @win
379
381
 
380
- component.component.erase if cdk?
382
+ component.component.erase if cdk? && component? && component.init?
381
383
  end
382
384
 
383
385
  # Erases window screen by overwriting it with blanks
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reterm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mo Morsi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-04 00:00:00.000000000 Z
11
+ date: 2018-03-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby-terminfo
@@ -164,7 +164,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
164
164
  version: '0'
165
165
  requirements: []
166
166
  rubyforge_project:
167
- rubygems_version: 2.6.13
167
+ rubygems_version: 2.6.14
168
168
  signing_key:
169
169
  specification_version: 4
170
170
  summary: Text Based UI Framework built ontop of ncurses