module Rabbit::Renderer::Display::Search

Public Class Methods

new(*args, &block) click to toggle source
Calls superclass method
# File lib/rabbit/renderer/display/search.rb, line 7
def initialize(*args, &block)
  super
  init_search
end

Public Instance Methods

search_slide(forward=true) click to toggle source
# File lib/rabbit/renderer/display/search.rb, line 12
def search_slide(forward=true)
  if @search_window
    if @search_window.forward? == forward
      search_slide_with_current_input(true)
    else
      @search_window.forward = forward
    end
  else
    setup_search_window(forward)
    adjust_search_window
    @search_window.show
  end
end
searching?() click to toggle source
# File lib/rabbit/renderer/display/search.rb, line 31
def searching?
  !@search_window.nil?
end

Private Instance Methods

adjust_search_window() click to toggle source
# File lib/rabbit/renderer/display/search.rb, line 45
def adjust_search_window
  if @window and @search_window
    Utils.move_to_bottom_right(@window, @search_window.window)
  end
end
configured(x, y, w, h) click to toggle source
Calls superclass method
# File lib/rabbit/renderer/display/search.rb, line 40
def configured(x, y, w, h)
  super
  adjust_search_window
end
move_to_matched_slide(reg, forward, search_next=false) click to toggle source
# File lib/rabbit/renderer/display/search.rb, line 88
def move_to_matched_slide(reg, forward, search_next=false)
  current_index = @canvas.current_index
  indexes = @canvas.slide_indexes(reg)
  target_index = nil
  indexes.each_with_index do |index, i|
    if index == current_index
      target_index = i
      target_index += (forward ? 1 : -1) if search_next
      break
    elsif index > current_index
      target_index = i + (forward ? 0 : -1)
      break
    end
  end
  target_index = indexes.size - 1 if target_index.nil? and !forward
  if target_index and target_index >= 0 and
      target_index < indexes.size and
      indexes[target_index] != current_index
    @canvas.activate("JumpTo") {indexes[target_index]}
  end
end
search_slide_with_current_input(search_next=false) click to toggle source
# File lib/rabbit/renderer/display/search.rb, line 81
def search_slide_with_current_input(search_next=false)
  return if @search_window.empty?
  move_to_matched_slide(@search_window.regexp,
                        @search_window.forward?,
                        search_next)
end
setup_search_window(forward) click to toggle source
# File lib/rabbit/renderer/display/search.rb, line 51
def setup_search_window(forward)
  @search_window = SearchWindow.new(@canvas)
  @search_window.forward = forward
  @search_window.window.set_transient_for(@window)
  entry = @search_window.entry
  direction = @search_window.direction
  entry.signal_connect("key_press_event") do |widget, key|
    if key.state == Gdk::ModifierType.new
      if Keys::STOP_SLIDE_SEARCH_KEYS.include?(key.keyval)
        @canvas.activate("StopSlideSearch")
        true
      else
        false
      end
    else
      Gtk::AccelGroup.activate(@window, key.keyval, key.state)
    end
  end
  entry.signal_connect("changed") do
    search_slide_with_current_input
  end
  direction.signal_connect("toggled") do
    search_slide_with_current_input(true)
  end
  entry.signal_connect("activate") do
    search_slide_with_current_input(true)
    true
  end
end