Class: Mireru::Navigator

Inherits:
Gtk::ScrolledWindow
  • Object
show all
Defined in:
lib/mireru/navigator.rb

Instance Method Summary collapse

Constructor Details

#initialize(window, files, options = {}) ⇒ Navigator

Returns a new instance of Navigator.



25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/mireru/navigator.rb', line 25

def initialize(window, files, options={})
  super()
  @window = window
  @files = files
  @regexp = options[:regexp]
  @compact = options[:compact]
  @dir_iters = {}
  @icons = {}
  set_policy(:automatic, :automatic)
  set_size_request(200, -1)
  @model = Gtk::TreeStore.new(String, String, Gdk::Pixbuf)
  @tree_view = create_tree(@model)
  add(@tree_view)
end

Instance Method Details

#expand_toggle(open_all = false) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/mireru/navigator.rb', line 48

def expand_toggle(open_all=false)
  path = selected_path
  iter = @model.get_iter(path)
  file_path = iter.get_value(PATH_COLUMN)
  if open_all and File.file?(file_path)
    parent = iter.parent
    path = @model.get_path(parent)
    @tree_view.collapse_row(path)
  elsif @tree_view.row_expanded?(path)
    @tree_view.collapse_row(path)
  else
    if open_all
      return unless File.directory?(file_path)
      Dir.glob("#{file_path}/*") do |dir|
        next unless File.directory?(dir)
        child_iter = @dir_iters[dir]
        next unless child_iter
        load_dir(@model, dir, child_iter, true)
        @dir_iters.delete(dir)
      end
    end
    @tree_view.expand_row(path, open_all)
  end
end

#nextObject



40
41
42
# File 'lib/mireru/navigator.rb', line 40

def next
  @tree_view.move_cursor(Gtk::MovementStep::DISPLAY_LINES, 1)
end

#prevObject



44
45
46
# File 'lib/mireru/navigator.rb', line 44

def prev
  @tree_view.move_cursor(Gtk::MovementStep::DISPLAY_LINES, -1)
end

#selected_pathObject



73
74
75
76
77
# File 'lib/mireru/navigator.rb', line 73

def selected_path
  selection = @tree_view.selection
  selected = selection.selected
  @model.get_path(selected)
end