Parent

Class/Module Index [+]

Quicksearch

Redwood::FileBrowserMode

meant to be spawned via spawn_modal!

Constants

RESERVED_ROWS

Attributes

value[R]

Public Class Methods

new(dir=".") click to toggle source
# File lib/sup/modes/file-browser-mode.rb, line 19
def initialize dir="."
  @dirs = [Pathname.new(dir).realpath]
  @done = false
  @value = nil
  regen_text
  super :skip_top_rows => RESERVED_ROWS
end

Public Instance Methods

[](i;) click to toggle source
# File lib/sup/modes/file-browser-mode.rb, line 29
def [] i; @text[i]; end
cwd() click to toggle source
# File lib/sup/modes/file-browser-mode.rb, line 27
def cwd; @dirs.last end
lines() click to toggle source
# File lib/sup/modes/file-browser-mode.rb, line 28
def lines; @text.length; end

Protected Instance Methods

back() click to toggle source
# File lib/sup/modes/file-browser-mode.rb, line 33
def back
  return if @dirs.size == 1
  @dirs.pop
  reload
end
regen_text() click to toggle source
# File lib/sup/modes/file-browser-mode.rb, line 77
def regen_text
  @files = 
    begin
      cwd.entries.sort_by do |f|
        [f.directory? ? 0 : 1, f.basename.to_s]
      end
    rescue SystemCallError => e
      BufferManager.flash "Error: #{e.message}"
      [Pathname.new("."), Pathname.new("..")]
    end.map do |f|
    real_f = cwd + f
    name = f.basename.to_s +
      case
      when real_f.symlink?
        "@"
      when real_f.directory?
        "/"
      else
        ""
      end
    [name, real_f]
  end

  size_width = @files.max_of { |name, f| f.human_size.length }
  time_width = @files.max_of { |name, f| f.human_time.length }

  @text = ["#{cwd}:"] + @files.map do |name, f|
    sprintf "%#{time_width}s %#{size_width}s %s", f.human_time, f.human_size, name
  end
end
reload() click to toggle source
# File lib/sup/modes/file-browser-mode.rb, line 39
def reload
  regen_text
  jump_to_start
  buffer.mark_dirty
end
select_file_or_follow_directory() click to toggle source
# File lib/sup/modes/file-browser-mode.rb, line 56
def select_file_or_follow_directory
  name, f = @files[curpos - RESERVED_ROWS]
  return unless f

  if f.directory? && f.to_s != "."
    if f.readable?
      @dirs.push f
      reload
    else
      BufferManager.flash "Permission denied - #{f.realpath}"
    end
  else
    begin
      @value = f.realpath.to_s
      @done = true
    rescue SystemCallError => e
      BufferManager.flash e.message
    end
  end
end
view() click to toggle source
# File lib/sup/modes/file-browser-mode.rb, line 45
def view
   name, f = @files[curpos - RESERVED_ROWS]
  return unless f && f.file?

  begin
    BufferManager.spawn f.to_s, TextMode.new(f.read.ascii)
  rescue SystemCallError => e
    BufferManager.flash e.message
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.