module Rabbit::Renderer::Display::KeyHandler
Public Class Methods
new(*args, &block)
click to toggle source
Calls superclass method
# File lib/rabbit/renderer/display/key-handler.rb, line 9 def initialize(*args, &block) super init_key_handler end
Public Instance Methods
connect_key(keyval, modifier, flags, &block)
click to toggle source
# File lib/rabbit/renderer/display/key-handler.rb, line 14 def connect_key(keyval, modifier, flags, &block) @user_accel_group.connect(keyval, modifier, flags, &block) end
disconnect_key(keyval, modifier)
click to toggle source
# File lib/rabbit/renderer/display/key-handler.rb, line 18 def disconnect_key(keyval, modifier) @user_accel_group.disconnect_key(keyval, modifier) end
post_terminal()
click to toggle source
# File lib/rabbit/renderer/display/key-handler.rb, line 26 def post_terminal @window.add_accel_group(@accel_group) end
pre_terminal()
click to toggle source
# File lib/rabbit/renderer/display/key-handler.rb, line 22 def pre_terminal @window.remove_accel_group(@accel_group) end
Private Instance Methods
attach_key(window)
click to toggle source
# File lib/rabbit/renderer/display/key-handler.rb, line 41 def attach_key(window) window.add_accel_group(@accel_group) window.add_accel_group(@toggle_terminal_accel_group) end
calc_slide_number(val, modifier)
click to toggle source
# File lib/rabbit/renderer/display/key-handler.rb, line 93 def calc_slide_number(val, modifier) val += 10 if modifier.control_mask? val += 20 if modifier.mod1_mask? val end
clear_keys()
click to toggle source
Calls superclass method
# File lib/rabbit/renderer/display/key-handler.rb, line 51 def clear_keys super @window.remove_accel_group(@user_accel_group) if @user_accel_group clear_user_accel_group @window.add_accel_group(@user_accel_group) end
clear_user_accel_group()
click to toggle source
# File lib/rabbit/renderer/display/key-handler.rb, line 37 def clear_user_accel_group @user_accel_group = Gtk::AccelGroup.new end
detach_key(window)
click to toggle source
# File lib/rabbit/renderer/display/key-handler.rb, line 46 def detach_key(window) window.remove_accel_group(@accel_group) window.remove_accel_group(@toggle_terminal_accel_group) end
init_accel_group()
click to toggle source
# File lib/rabbit/renderer/display/key-handler.rb, line 58 def init_accel_group @accel_group = Gtk::AccelGroup.new init_number_keys init_no_prefix_keys init_shift_keys init_control_keys init_alt_keys end
init_alt_keys()
click to toggle source
# File lib/rabbit/renderer/display/key-handler.rb, line 267 def init_alt_keys mod = Gdk::ModifierType::MOD1_MASK keys = Keys::Alt::RESET_ADJUSTMENT_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("ResetAdjustment") end keys = Keys::Alt::RESET_TIMER_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("ResetTimer") end end
init_control_keys()
click to toggle source
# File lib/rabbit/renderer/display/key-handler.rb, line 216 def init_control_keys mod = Gdk::ModifierType::CONTROL_MASK keys = Keys::Control::CLEAR_GRAFFITI_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("ClearGraffiti") end keys = Keys::Control::UNDO_GRAFFITI_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("UndoGraffiti") end keys = Keys::Control::CLEAR_SLIDE_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("ClearSlide") end keys = Keys::Control::PRINT_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("Print") end keys = Keys::Control::SEARCH_SLIDE_FORWARD_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("SearchSlideForward") end keys = Keys::Control::SEARCH_SLIDE_BACKWARD_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("SearchSlideBackward") end keys = Keys::Control::SEARCH_SLIDE_FORWARD_NEXT_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("SearchSlideForwardNext") end keys = Keys::Control::SEARCH_SLIDE_BACKWARD_NEXT_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("SearchSlideBackwardNext") end keys = Keys::Control::STOP_SLIDE_SEARCH_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("StopSlideSearch") end keys = Keys::MOVE_TO_NEXT_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("NextSlide") end keys = Keys::MOVE_TO_PREVIOUS_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("PreviousSlide") end end
init_key_handler()
click to toggle source
# File lib/rabbit/renderer/display/key-handler.rb, line 31 def init_key_handler @user_accel_group = nil init_accel_group init_toggle_terminal_accel_group end
init_no_prefix_keys()
click to toggle source
# File lib/rabbit/renderer/display/key-handler.rb, line 122 def init_no_prefix_keys mod = Gdk::ModifierType.new keys = Keys::QUIT_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("Quit") end keys = Keys::MOVE_TO_NEXT_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("Next") end keys = Keys::MOVE_TO_PREVIOUS_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("Previous") end keys = Keys::MOVE_TO_FIRST_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("FirstSlide") end keys = Keys::MOVE_TO_LAST_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("LastSlide") end keys = Keys::TOGGLE_FULLSCREEN_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("ToggleFullScreen") end keys = Keys::RELOAD_THEME_KEYS set_keys(keys, mod) do |group, obj, val, modifier| reload_theme end keys = Keys::SAVE_AS_IMAGE_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("SaveAsImage") end keys = Keys::ICONIFY_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("Iconify") end keys = Keys::TOGGLE_INDEX_MODE_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("ToggleIndexMode") end keys = Keys::CACHE_ALL_SLIDES_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("CacheAllSlides") end keys = Keys::SEARCH_SLIDE_FORWARD_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("SearchSlideForward") end keys = Keys::SEARCH_SLIDE_BACKWARD_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("SearchSlideBackward") end keys = Keys::SEARCH_SLIDE_FORWARD_NEXT_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("SearchSlideForwardNext") end end
init_number_keys()
click to toggle source
# File lib/rabbit/renderer/display/key-handler.rb, line 99 def init_number_keys no_mod = Gdk::ModifierType.new mods = Utils.combination([ Gdk::ModifierType::CONTROL_MASK, Gdk::ModifierType::MOD1_MASK, ]) mods.each do |mod| mod = mod.inject(no_mod) do |result, item| result | item end keys = (0..9).collect{|i| Gdk::Keyval.const_get("KEY_#{i}")} set_keys(keys, mod) do |group, obj, val, modifier| index = calc_slide_number(val - Gdk::Keyval::KEY_0, modifier) @canvas.activate("JumpTo") {index} end keys = (0..9).collect{|i| Gdk::Keyval.const_get("KEY_KP_#{i}")} set_keys(keys, mod) do |group, obj, val, modifier| index = calc_slide_number(val - Gdk::Keyval::KEY_KP_0, modifier) @canvas.activate("JumpTo") {index} end end end
init_shift_keys()
click to toggle source
# File lib/rabbit/renderer/display/key-handler.rb, line 183 def init_shift_keys mod = Gdk::ModifierType::SHIFT_MASK keys = Keys::Shift::WHITE_OUT_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("ToggleWhiteout") end keys = Keys::Shift::BLACK_OUT_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("ToggleBlackout") end keys = Keys::Shift::EXPAND_HOLE_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("ExpandHole") end keys = Keys::Shift::NARROW_HOLE_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("NarrowHole") end keys = Keys::Shift::TOGGLE_GRAFFITI_MODE_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("ToggleGraffitiMode") end keys = Keys::Shift::SEARCH_SLIDE_BACKWARD_NEXT_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("SearchSlideBackwardNext") end keys = Keys::Shift::TOGGLE_INFO_WINDOW_KEYS set_keys(keys, mod) do |group, obj, val, modifier| @canvas.activate("ToggleInfoWindow") end end
init_toggle_terminal_accel_group()
click to toggle source
# File lib/rabbit/renderer/display/key-handler.rb, line 67 def init_toggle_terminal_accel_group @toggle_terminal_accel_group = Gtk::AccelGroup.new mod = Gdk::ModifierType::SHIFT_MASK | Gdk::ModifierType::CONTROL_MASK | Gdk::ModifierType::MOD1_MASK keys = Keys::ShiftControlAlt::TOGGLE_TERMINAL_KEYS set_keys(keys, mod, nil, @toggle_terminal_accel_group) do |group, obj, val, modifier| @canvas.activate("ToggleTerminal") end end
set_key_press_event(widget)
click to toggle source
# File lib/rabbit/renderer/display/key-handler.rb, line 281 def set_key_press_event(widget) prev_keys = [ Gdk::Keyval::KEY_Up, Gdk::Keyval::KEY_Left, Gdk::Keyval::KEY_KP_Up, Gdk::Keyval::KEY_KP_Left, ] next_keys = [ Gdk::Keyval::KEY_Right, Gdk::Keyval::KEY_Down, Gdk::Keyval::KEY_KP_Right, Gdk::Keyval::KEY_KP_Down, ] widget.signal_connect("key_press_event") do |_widget, event| handled = true modifier = event.state case event.keyval when *prev_keys if have_slide_number_related_mask?(modifier) index = calc_slide_number(0, modifier) @canvas.activate("JumpTo") {@canvas.current_index - index} else @canvas.activate("PreviousSlide") end when *next_keys if have_slide_number_related_mask?(modifier) index = calc_slide_number(0, modifier) @canvas.activate("JumpTo") {@canvas.current_index + index} else @canvas.activate("NextSlide") end else handled = false end handled end end
set_keys(keys, mod, flags=nil, accel_group=@accel_group, &block)
click to toggle source
# File lib/rabbit/renderer/display/key-handler.rb, line 81 def set_keys(keys, mod, flags=nil, accel_group=@accel_group, &block) flags ||= Gtk::AccelFlags::VISIBLE keys.each do |val| accel_group.connect(val, mod, flags, &block) end end