module TabScroll

The main program.

Note that we expect a global hash `$settings`. It contains settings from the commandline argument parser (Settings class).

Constants

VERSION

Public Class Methods

run(filename) click to toggle source

Starts the Curses engine and parses `filename`, finally displaying things onscreen.

# File lib/tabscroll.rb, line 18
def self.run filename

  if not File.exists? filename
    puts "Error: File '#{filename}' doesn't exist."
    exit 69
  end

  @engine = Engine.new
  if not @engine
    puts "Error: Failed to start Curses!"
    exit 1337
  end
  @engine.timeout 10

  win = Screen.new(0, 1, @engine.width, @engine.height - 2)
  track = Track.new win
  track.load filename
  track.auto_scroll true

  titlebar  = Screen.new(0, 0, @engine.width, 1)
  statusbar = Screen.new(0, (@engine.height - 1), @engine.width, 1)

  bars_hidden = false
  finished = false
  while not finished

    # WHY DOES GETCH CLEARS UP THE WHOLE SCREEN?
    # IT DOESNT MAKE ANY SENSE
    c = @engine.getchar
    case c
    when 'e'
      track.end
    when 'a'
      track.begin
    when 'h'
      show_help_window
    when 'o'
      bars_hidden = (bars_hidden ? false : true)
      Curses::clear
    when '<'
      track.scroll -10
    when '>'
      track.scroll 10
    when Curses::KEY_LEFT
      track.speed -= 1
    when Curses::KEY_RIGHT
      track.speed += 1
    when Curses::KEY_DOWN, Curses::KEY_UP, ' '
      track.speed = 0
    when 'q'
      @engine.exit
      exit
    end

    track.update
    track.show
    if not bars_hidden
      titlebar.mvaddstr(0, 0, "#{File.basename filename} (#{track.percent_completed}%) ", Engine::Colors[:cyan])
      titlebar.mvaddstr_right(0, "  Speed: #{track.speed}", Engine::Colors[:cyan])

      statusbar.mvaddstr_left(0, "tabscroll v#{VERSION} - press `h` for help", Engine::Colors[:green])
    end
  end

  @engine.exit
  return nil
end
show_help_window() click to toggle source

Displays a help window that waits for a keypress.

# File lib/tabscroll.rb, line 87
  def self.show_help_window
    title = 'Help'
    text  = <<END_OF_TEXT
                  q  quit
                  h  help/go back
         left/right  auto-scroll left/right
  up/down/space bar  stop auto-scrolling
                </>  step scroll left/right
                  o  toggle status/title bars

        _|_  _. |_   _  _ ._ _  | |
         |_ (_| |_) _> (_ | (_) | | #{VERSION}

 homepage alexdantas.net/projects/tabscroll
   author Alexandre Dantas <eu@alexdantas.net>
END_OF_TEXT

    pop = Popup.new(title, text)
    will_quit = pop.show
    if will_quit
      @engine.exit
      exit
    end
  end