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 +4 -4
- data/lib/reterm/init.rb +10 -9
- data/lib/reterm/mixins/cdk_component.rb +4 -0
- data/lib/reterm/resize.rb +12 -1
- data/lib/reterm/terminal.rb +4 -1
- data/lib/reterm/version.rb +1 -1
- data/lib/reterm/window.rb +5 -3
- metadata +3 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 322cb2050b47800401185435691f5b5e79d9a9d3
         | 
| 4 | 
            +
              data.tar.gz: 010ddff147de71d7a7163ab3627a05162b39e785
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 94489d9e2e1336538ea9605d82bd37ca1dfc4ea322ec382b1f5376ced1d0c631d0997a284f8799f24391ba1ca427c6c37f9ec8a054ce5e86b8ff6add06b6e1e0
         | 
| 7 | 
            +
              data.tar.gz: 77f4e71b0ca2c0eb005ecb17f6bc5e85c94bf5a8339686fec4bab6e664c6ac57f71b2978c60620c4829fe23b8763a30c40dcbfd7151cc519b8cda33c4e54d753
         | 
    
        data/lib/reterm/init.rb
    CHANGED
    
    | @@ -26,18 +26,19 @@ module RETerm | |
| 26 26 |  | 
| 27 27 | 
             
                err = nil
         | 
| 28 28 |  | 
| 29 | 
            +
                min = opts[:min_size]
         | 
| 30 | 
            +
             | 
| 29 31 | 
             
                begin
         | 
| 30 | 
            -
                   | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 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 |  | 
    
        data/lib/reterm/resize.rb
    CHANGED
    
    | @@ -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 | 
            -
             | 
| 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 | 
             
                }
         | 
    
        data/lib/reterm/terminal.rb
    CHANGED
    
    | @@ -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 |  | 
    
        data/lib/reterm/version.rb
    CHANGED
    
    
    
        data/lib/reterm/window.rb
    CHANGED
    
    | @@ -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  | 
| 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. | 
| 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- | 
| 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. | 
| 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
         |