Class: Mireru::Navigator

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

Instance Method Summary collapse

Constructor Details

#initialize(window, files) ⇒ Navigator

Returns a new instance of Navigator.



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

def initialize(window, files)
  super()
  @window = window
  @files = files
  @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



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

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



37
38
39
# File 'lib/mireru/navigator.rb', line 37

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

#prevObject



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

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

#selected_pathObject



70
71
72
73
74
# File 'lib/mireru/navigator.rb', line 70

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