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.



7
8
9
10
11
12
13
14
15
16
17
# File 'lib/mireru/navigator.rb', line 7

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



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/mireru/navigator.rb', line 27

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



19
20
21
# File 'lib/mireru/navigator.rb', line 19

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

#prevObject



23
24
25
# File 'lib/mireru/navigator.rb', line 23

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

#selected_pathObject



52
53
54
55
56
# File 'lib/mireru/navigator.rb', line 52

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