Class: SetViewerActor

Inherits:
Object show all
Includes:
BasicActor
Defined in:
lib/set_viewer_actor.rb

Instance Method Summary collapse

Methods included from BasicActor

included

Constructor Details

#initializeSetViewerActor

Returns a new instance of SetViewerActor.



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/set_viewer_actor.rb', line 4

def initialize
  subscribe "tell_selected_item", :tell_selected_item
  subscribe "copy_selected_item", :copy_selected_item
  subscribe "tell_selected_item_content", :tell_selected_item_content
  subscribe "set_build_finished", :refresh_view
  subscribe "set_build_failed", :show_error
  subscribe "scroll_changed", :scroll
  subscribe "context_lines_changed", :update_context_lines
  subscribe "refresh", :refresh
  subscribe "show_match_lines_toggled", :toggle_match_lines
  subscribe "select_next_file", :select_next_file
  subscribe "select_prev_file", :select_prev_file
  subscribe "select_next_item", :select_next_item
  subscribe "select_prev_item", :select_prev_item
  subscribe "welcome_user", :welcome_user
  subscribe "display_help", :display_help
  subscribe "display_working_set", :display_working_set
  welcome_user
end

Instance Method Details

#copy_selected_item(_, include_context = false) ⇒ Object



129
130
131
132
133
134
135
136
137
138
# File 'lib/set_viewer_actor.rb', line 129

def copy_selected_item(_, include_context=false)
  if items_present?
    item = @working_set_view.selected_item
    if include_context
      Clipboard.copy item.full_body
    else
      Clipboard.copy item.match_line
    end
  end
end

#display_help(_) ⇒ Object



29
30
31
32
# File 'lib/set_viewer_actor.rb', line 29

def display_help(_)
  debug_message "displaying help!"
  View::Help.render
end

#display_working_set(_) ⇒ Object



34
35
36
37
# File 'lib/set_viewer_actor.rb', line 34

def display_working_set(_)
  debug_message "displaying working_set!"
  @working_set_view&.render
end

#items_present?Boolean

Returns:

  • (Boolean)


48
49
50
# File 'lib/set_viewer_actor.rb', line 48

def items_present?
  (@working_set_view&.working_set&.items&.size || 0) > 0
end

#refresh(_ = nil) ⇒ Object



64
65
66
67
68
69
70
# File 'lib/set_viewer_actor.rb', line 64

def refresh(_=nil)
  return unless @working_set_view
  # triggers search again without changing search term
  ws = @working_set_view.working_set

  publish "search_changed", ws.search, ws.options
end

#refresh_view(_, working_set) ⇒ Object



39
40
41
42
43
44
45
46
# File 'lib/set_viewer_actor.rb', line 39

def refresh_view(_, working_set)
  prev_wsv = @working_set_view
  @working_set_view = View::WorkingSet.new(working_set)
  if prev_wsv&.working_set&.search == working_set.search
    @working_set_view.restore_selection_state(prev_wsv)
  end
  @working_set_view.render
end

#scroll(_, delta) ⇒ Object



52
53
54
55
# File 'lib/set_viewer_actor.rb', line 52

def scroll(_, delta)
  return unless items_present?
  @working_set_view.scroll(delta)
end

#select_next_file(_) ⇒ Object



77
78
79
80
81
82
83
# File 'lib/set_viewer_actor.rb', line 77

def select_next_file(_)
  return unless items_present?
  @working_set_view.select_next_file
  unless @working_set_view.selected_item_in_view?
    publish "scroll_changed", @working_set_view.selected_item_scroll_delta
  end
end

#select_next_item(_) ⇒ Object



93
94
95
96
97
98
99
# File 'lib/set_viewer_actor.rb', line 93

def select_next_item(_)
  return unless items_present?
  @working_set_view.select_next_item
  unless @working_set_view.selected_item_in_view?
    publish "scroll_changed", @working_set_view.selected_item_scroll_delta
  end
end

#select_prev_file(_) ⇒ Object



85
86
87
88
89
90
91
# File 'lib/set_viewer_actor.rb', line 85

def select_prev_file(_)
  return unless items_present?
  @working_set_view.select_prev_file
  unless @working_set_view.selected_item_in_view?
    publish "scroll_changed", @working_set_view.selected_item_scroll_delta
  end
end

#select_prev_item(_) ⇒ Object



101
102
103
104
105
106
107
# File 'lib/set_viewer_actor.rb', line 101

def select_prev_item(_)
  return unless items_present?
  @working_set_view.select_prev_item
  unless @working_set_view.selected_item_in_view?
    publish "scroll_changed", @working_set_view.selected_item_scroll_delta
  end
end

#show_error(_, error) ⇒ Object



140
141
142
143
144
# File 'lib/set_viewer_actor.rb', line 140

def show_error(_, error)
  debug_message error
  # Ncurses.stdscr.mvaddstr 0, 0, "SetViewerActor#show_error: #{error.backtrace}"
  # Ncurses.stdscr.refresh
end

#tell_selected_item(_) ⇒ Object



109
110
111
112
113
114
115
116
117
118
# File 'lib/set_viewer_actor.rb', line 109

def tell_selected_item(_)
  if items_present?
    item = @working_set_view.selected_item
    publish "respond_client", "selected_item", {
      file_path: item.file_path,
      row: item.row,
      column: item.column
    }
  end
end

#tell_selected_item_content(_) ⇒ Object



120
121
122
123
124
125
126
127
# File 'lib/set_viewer_actor.rb', line 120

def tell_selected_item_content(_)
  if items_present?
    item = @working_set_view.selected_item
    publish "respond_client", "selected_item_content", {
      data: item.match_line
    }
  end
end

#toggle_match_lines(_) ⇒ Object



72
73
74
75
# File 'lib/set_viewer_actor.rb', line 72

def toggle_match_lines(_)
  return unless items_present?
  @working_set_view.toggle_match_lines
end

#update_context_lines(_, delta) ⇒ Object



57
58
59
60
61
62
# File 'lib/set_viewer_actor.rb', line 57

def update_context_lines(_, delta)
  $CONTEXT_LINES += delta
  $CONTEXT_LINES = 0 if $CONTEXT_LINES < 0
  debug_message "context lines set to #{$CONTEXT_LINES}"
  refresh
end

#welcome_user(_ = nil) ⇒ Object



24
25
26
27
# File 'lib/set_viewer_actor.rb', line 24

def welcome_user(_=nil)
  debug_message "displaying welcome_user!"
  View::WelcomeUser.render
end