module Rabbit::Renderer::Display::DrawingAreaBase

Public Class Methods

new(canvas) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 35
def initialize(canvas)
  @caching = nil
  @need_reload_theme = false
  super
end

Public Instance Methods

attach_to(window, container=nil, &block) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 200
def attach_to(window, container=nil, &block)
  super

  init_menu
  init_gesture_actions
  add_widgets_to_container(@container, &block)
  widget.show
  attach_menu(@window)
  attach_key(@window)
end
cache_all_slides() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 142
def cache_all_slides
  pre_cache_all_slides(@canvas.slide_size)
  canceled = false
  @canvas.slides.each_with_index do |slide, i|
    @canvas.change_current_index(i) do
      compile_slide(slide)
    end
    unless caching_all_slides(i)
      canceled = true
      break
    end
  end
  post_cache_all_slides(canceled)
end
caching_all_slides(i) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 163
def caching_all_slides(i)
  update_progress(i)
  continue = @caching_size == [width, height] &&
    !@canvas.quitted? && !@canvas.applying?
  continue
end
confirm(message) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 181
def confirm(message)
  confirm_dialog(message) == Gtk::MessageDialog::RESPONSE_OK
end
detach() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 211
def detach
  detach_key(@window)
  detach_menu(@window)
  widget.hide
  unless @window.destroyed?
    remove_widgets_from_container(@container)
  end

  super
end
index_mode_off() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 94
def index_mode_off
  super
end
index_mode_on() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 90
def index_mode_on
  super
end
post_apply_theme() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 41
def post_apply_theme
  if @need_reload_theme
    @need_reload_theme = false
    reload_theme
  else
    super
    update_menu
  end
end
post_cache_all_slides(canceled) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 170
def post_cache_all_slides(canceled)
  end_progress
  @caching = false
  return if @canvas.quitted?
  if canceled
    reload_theme
  else
    @area.queue_draw
  end
end
post_fullscreen() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 59
def post_fullscreen
  super
  update_menu
end
post_iconify() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 69
def post_iconify
  super
  update_menu
end
post_init_gui() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 237
def post_init_gui
end
post_move(old_index, index) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 51
def post_move(old_index, index)
  update_title
  reset_adjustment
  clear_graffiti
  # toggle_graffiti_mode if @graffiti_mode
  super
end
post_parse() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 79
def post_parse
  super
  clear_button_handler
  update_title
  update_menu
  if @need_reload_theme
    @need_reload_theme = false
    reload_theme
  end
end
post_print(canceled) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 120
def post_print(canceled)
  end_progress
end
post_to_pixbuf(canceled) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 137
def post_to_pixbuf(canceled)
  super
  end_progress
end
post_toggle_index_mode() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 103
def post_toggle_index_mode
  @canvas.activate("ClearGraffiti")
  update_menu
  update_title
  super
end
post_unfullscreen() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 64
def post_unfullscreen
  super
  update_menu
end
pre_cache_all_slides(slide_size) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 157
def pre_cache_all_slides(slide_size)
  @caching = true
  @caching_size = [width, height]
  start_progress(slide_size)
end
pre_parse() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 74
def pre_parse
  super
  update_menu
end
pre_print(slide_size) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 110
def pre_print(slide_size)
  start_progress(slide_size)
end
pre_to_pixbuf(slide_size) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 124
def pre_to_pixbuf(slide_size)
  super
  start_progress(slide_size)
  @pixbufing_size = [width, height]
end
pre_toggle_index_mode() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 98
def pre_toggle_index_mode
  super
  Utils.process_pending_events
end
printing(i) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 114
def printing(i)
  update_progress(i)
  continue = !@canvas.quitted?
  continue
end
reload_source(&callback) click to toggle source
Calls superclass method
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 193
def reload_source(&callback)
  if @canvas.need_reload_source?
    callback ||= Utils.process_pending_events_proc
    super(callback)
  end
end
reload_theme(&callback) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 185
def reload_theme(&callback)
  if @canvas.applying?
    @need_reload_theme = true
  else
    super
  end
end
reset_adjustment() click to toggle source
Calls superclass method
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 232
def reset_adjustment
  super
  @area.queue_draw
end
to_pixbufing(i) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 130
def to_pixbufing(i)
  update_progress(i)
  continue = @pixbufing_size == [width, height] &&
    !@canvas.quitted? && !@canvas.applying?
  super or continue
end
toggle_blackout() click to toggle source
Calls superclass method
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 227
def toggle_blackout
  super
  @area.queue_draw
end
toggle_whiteout() click to toggle source
Calls superclass method
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 222
def toggle_whiteout
  super
  @area.queue_draw
end

Private Instance Methods

add_widgets_to_container(container) { |container, hbox| ... } click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 241
def add_widgets_to_container(container)
  @hbox = Gtk::HBox.new
  @vbox = Gtk::VBox.new
  @vbox.pack_start(@area, true, true, 0)
  @hbox.pack_end(@vbox, true, true, 0)
  if block_given?
    yield(container, @hbox)
  else
    container.add(@hbox)
  end
  @hbox.show
  @vbox.show
end
configured_after(widget, event) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 366
def configured_after(widget, event)
  @mask = nil
  set_hole
  super unless @caching
  false
end
confirm_dialog(message) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 373
def confirm_dialog(message)
  flags = Gtk::Dialog::MODAL | Gtk::Dialog::DESTROY_WITH_PARENT
  dialog_type = Gtk::MessageDialog::INFO
  buttons = Gtk::MessageDialog::BUTTONS_OK_CANCEL
  dialog = Gtk::MessageDialog.new(nil, flags, dialog_type,
                                  buttons, message)
  result = dialog.run
  dialog.destroy
  result
end
draw_current_slide_pixbuf(pixbuf) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 317
def draw_current_slide_pixbuf(pixbuf)
  width, height = pixbuf.width, pixbuf.height
  x = @adjustment_x * width
  y = @adjustment_y * height
  @drawable.draw_pixbuf(@foreground, pixbuf,
                        x, y, 0, 0, width, height,
                        Gdk::RGB::DITHER_NORMAL, 0, 0)
  if @adjustment_x != 0 or @adjustment_y != 0
    draw_next_slide
  end
end
draw_next_slide() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 329
def draw_next_slide
  @canvas.change_current_index(@canvas.current_index + 1) do
    draw_current_slide do |pixbuf|
      draw_next_slide_pixbuf(pixbuf)
    end
  end
end
draw_next_slide_pixbuf(pixbuf) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 337
def draw_next_slide_pixbuf(pixbuf)
  width, height = pixbuf.size
  adjustment_width = @adjustment_x * width
  adjustment_height = @adjustment_y * height
  src_x = src_y = dest_x = dest_y = 0
  src_width = width
  src_height = height

  if adjustment_width > 0
    dest_x = width - adjustment_width
    src_width = adjustment_width
  elsif adjustment_width < 0
    src_x = width + adjustment_width
    src_width = -adjustment_width
  end

  if adjustment_height > 0
    dest_y = height - adjustment_height
    src_height = adjustment_height
  elsif adjustment_height < 0
    src_y = height + adjustment_height
    src_height = -adjustment_height
  end

  @drawable.draw_pixbuf(@foreground, pixbuf, src_x, src_y,
                        dest_x, dest_y, src_width, src_height,
                        Gdk::RGB::DITHER_NORMAL, 0, 0)
end
draw_slide(slide, simulation) { |*args| ... } click to toggle source
Calls superclass method
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 306
def draw_slide(slide, simulation, &block)
  super do |*args|
    # block.call(*args)
    # magnify {block.call(*args)} unless simulation
    ## the below codes are workaround for
    ## http://redmine.ruby-lang.org/issues/show/2600
    yield(*args)
    magnify {yield(*args)} unless simulation
  end
end
exposed(widget, event) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 288
def exposed(widget, event)
  reload_source unless @caching

  if whiteouting?
    @drawable.draw_rectangle(@white, true, 0, 0,
                             original_width, original_height)
  elsif blackouting?
    @drawable.draw_rectangle(@black, true, 0, 0,
                             original_width, original_height)
  else
    super
    draw_graffiti
    draw_gesture
    draw_spotlight
  end
  true
end
init_drawing_area() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 260
def init_drawing_area
  super
  event_mask = Gdk::Event::BUTTON_PRESS_MASK
  event_mask |= Gdk::Event::BUTTON_RELEASE_MASK
  event_mask |= Gdk::Event::BUTTON1_MOTION_MASK
  event_mask |= Gdk::Event::BUTTON2_MOTION_MASK
  event_mask |= Gdk::Event::BUTTON3_MOTION_MASK
  @area.add_events(event_mask)
  set_key_press_event(@area)
  set_button_event(@area)
  set_motion_notify_event
  set_scroll_event(@area)
end
mapped(widget) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 274
def mapped(widget)
  super
  @white = Gdk::GC.new(@drawable)
  @white.set_rgb_fg_color(Color.parse("white").to_gdk_color)
  @black = Gdk::GC.new(@drawable)
  @black.set_rgb_fg_color(Color.parse("black").to_gdk_color)
end
remove_widgets_from_container(container) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 255
def remove_widgets_from_container(container)
  container.remove(@hbox)
  @hbox = @vbox = nil
end
set_motion_notify_event() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-base.rb, line 282
def set_motion_notify_event
  @area.signal_connect("motion_notify_event") do |widget, event|
    call_hook_procs(@motion_notify_hook_procs, event)
  end
end