<<(slide)
click to toggle source
def <<(slide)
slide.index = slides.size
slides << slide
end
action(name)
click to toggle source
def action(name)
act = @actions.get_action(name)
if act
act
else
logger.warn(_("Unknown action: %s") % name)
false
end
end
activate(name, &block)
click to toggle source
def activate(name, &block)
act = action(name)
if act and act.sensitive?
act.activate(&block)
true
else
false
end
end
allotted_time()
click to toggle source
def allotted_time
time = @allotted_time
time ||= title_slide.allotted_time if title_slide
Utils.ensure_time(time)
end
apply_theme(name=nil, &block)
click to toggle source
def apply_theme(name=nil, &block)
_apply_theme(name, Object.new.__id__, &block)
end
applying?()
click to toggle source
def applying?
not @apply_theme_request_queue.empty?
end
attach_to(frame, window, container=nil, &block)
click to toggle source
def attach_to(frame, window, container=nil, &block)
@frame = frame if frame
@renderer.attach_to(window, container, &block) if window
end
cache_all_slides()
click to toggle source
def cache_all_slides
process do
@renderer.cache_all_slides
end
end
change_current_index(new_index) { || ... }
click to toggle source
def change_current_index(new_index)
mode = @index_mode
if mode
index = @index_current_index
@index_current_index = new_index
else
index = @current_index
@current_index = new_index
end
if 0 <= current_index and current_index < slide_size
yield
end
ensure
if mode
@index_current_index = index
else
@current_index = index
end
end
current_index()
click to toggle source
def current_index
if @index_mode
@index_current_index
else
@current_index
end
end
current_slide()
click to toggle source
def current_slide
slide = slides[current_index]
if slide
slide
else
move_to_first
slides.first
end
end
detach()
click to toggle source
def detach
@frame = NullFrame.new
@renderer.detach
end
each(&block)
click to toggle source
def each(&block)
slides.each(&block)
end
find_slide(pattern)
click to toggle source
def find_slide(pattern)
slides.find {|slide| slide.match?(pattern)}
end
first_slide?()
click to toggle source
def first_slide?
current_index.zero?
end
font_resolution()
click to toggle source
def font_resolution
INTERNAL_DPI * @font_resolution_ratio
end
front(public_level=nil)
click to toggle source
def front(public_level=nil)
Front.new(self, public_level)
end
full_path(path)
click to toggle source
def full_path(path)
@source and @source.full_path(path)
end
fullscreened()
click to toggle source
def fullscreened
@renderer.post_fullscreen
end
have_next?()
click to toggle source
def have_next?
have_next_slide? or (current_slide and !current_slide.last?)
end
have_next_slide?()
click to toggle source
def have_next_slide?
slide_size - 1 > current_index
end
have_previous?()
click to toggle source
def have_previous?
have_previous_slide? or (current_slide and !current_slide.first?)
end
have_previous_slide?()
click to toggle source
def have_previous_slide?
0 < current_index
end
iconified()
click to toggle source
def iconified
@renderer.post_iconify
end
index_mode?()
click to toggle source
def index_mode?
@index_mode
end
last_slide?()
click to toggle source
def last_slide?
slide_size.zero? or current_index == (slide_size - 1)
end
merge_theme(name)
click to toggle source
def merge_theme(name)
unless @slides.empty?
manager = Theme::Manager.new(self)
manager.apply(name)
@renderer.post_apply_theme
end
end
move_to_first()
click to toggle source
def move_to_first
move_to_if_can(0)
end
move_to_if_can(index)
click to toggle source
def move_to_if_can(index)
if index and 0 <= index and index < slide_size
move_to(index)
end
current_index
end
move_to_last()
click to toggle source
def move_to_last
move_to(slide_size - 1)
end
move_to_next_if_can()
click to toggle source
def move_to_next_if_can
slide = current_slide
if slide and !slide.last?
old_index = slide.drawing_index
slide.move_to_next
Action.update_status(self)
@renderer.post_move_in_slide(old_index, slide.drawing_index)
else
move_to_next_slide_if_can
end
end
move_to_next_slide_if_can()
click to toggle source
def move_to_next_slide_if_can
move_to_if_can(current_index + 1)
end
move_to_previous_if_can()
click to toggle source
def move_to_previous_if_can
slide = current_slide
if slide and !slide.first?
old_index = slide.drawing_index
slide.move_to_previous
Action.update_status(self)
@renderer.post_move_in_slide(old_index, slide.drawing_index)
else
move_to_previous_slide_if_can
end
end
move_to_previous_slide_if_can()
click to toggle source
def move_to_previous_slide_if_can
move_to_if_can(current_index - 1)
end
need_reload_source?()
click to toggle source
def need_reload_source?
!@processing and @source and @source.modified?
end
next_slide()
click to toggle source
def next_slide
slides[current_index + 1]
end
parse(source=nil, callback=nil) { |$!| ... }
click to toggle source
def parse(source=nil, callback=nil, &block)
id = Object.new.__id__
@parse_request_queue.push(id)
@source = source || @source
begin
index = current_index
keep_index do
@renderer.pre_parse
clear
Parser.parse(self, @source)
set_current_index(index)
reload_theme do
if @parse_request_queue.last != id
raise ParseFinish
end
callback.call if callback
end
@renderer.post_parse
index = current_index
end
set_current_index(index)
rescue ParseFinish
rescue ParseError, UnsupportedFormatError
if block_given?
yield($!)
else
logger.warn($!.message)
end
ensure
@parse_request_queue.delete_if {|x| x == id}
end
end
parsing?()
click to toggle source
def parsing?
not @parse_request_queue.empty?
end
print(&block)
click to toggle source
def print(&block)
process do
@renderer.print(&block)
end
end
processing?()
click to toggle source
def processing?
@processing
end
quit()
click to toggle source
def quit
@quitted = true
@frame.quit
end
quitted?()
click to toggle source
def quitted?
@quitted
end
reload_source(callback=nil, &block)
click to toggle source
def reload_source(callback=nil, &block)
if need_reload_source?
parse(nil, callback, &block)
end
end
reload_theme(&block)
click to toggle source
def reload_theme(&block)
apply_theme(@theme_name, &block)
end
reset_timer()
click to toggle source
def reset_timer
@limit_time = nil
end
rest_time()
click to toggle source
def rest_time
@limit_time ? @limit_time - Time.now : nil
end
save_as_image()
click to toggle source
def save_as_image
process do
generator = HTML::Generator.new(self,
saved_image_base_name,
@saved_image_type,
@output_html,
@output_index_html,
@rss_base_uri)
generator.pdf_filename = filename if /\.pdf/ =~ filename.to_s
generator.source_filename = @source_filename
generator.save
end
end
saved_image_base_name()
click to toggle source
def saved_image_base_name
if @saved_image_base_name
base_name = GLib.filename_to_utf8(@saved_image_base_name)
else
base_name = title.dup
end
base_name << "-index" if index_mode?
base_name
end
slide_index(pattern)
click to toggle source
def slide_index(pattern)
slides.each_with_index do |slide, i|
return i if slide.match?(pattern)
end
nil
end
slide_indexes(pattern)
click to toggle source
def slide_indexes(pattern)
indexes = []
slides.each_with_index do |slide, i|
indexes << i if slide.match?(pattern)
end
indexes
end
slide_size()
click to toggle source
def slide_size
slides.size
end
slide_text(index=current_index)
click to toggle source
def slide_text(index=current_index)
return "" if slides.empty?
slide = slides[index]
return "" if slide.nil?
slide.text.strip
end
slide_title(index=current_index)
click to toggle source
def slide_title(index=current_index)
return "" if slides.empty?
slide = slides[index]
return title if slide.nil?
if slide.is_a?(Element::TitleSlide)
slide.title
else
"#{title}: #{slide.title}"
end
end
slides()
click to toggle source
def slides
if @index_mode
@index_slides
else
@slides
end
end
source()
click to toggle source
def source
@source.read
end
source_force_modified(force_modified) { |source| ... }
click to toggle source
def source_force_modified(force_modified)
prev = @source.force_modified
@source.force_modified = force_modified
yield @source
@source.force_modified = prev
end
start_auto_redraw_timer(interval)
click to toggle source
def start_auto_redraw_timer(interval)
stop_auto_redraw_timer
timer = GLib::Timeout.add(interval * 1000) do
if quitted?
false
else
activate("Redraw")
true
end
end
@auto_redraw_timer = timer
end
start_timer(limit)
click to toggle source
def start_timer(limit)
@limit_time = Time.now + limit
end
stop_auto_redraw_timer()
click to toggle source
def stop_auto_redraw_timer
if @auto_redraw_timer
GLib::Source.remove(@auto_redraw_timer)
@auto_redraw_timer = nil
end
end
theme_name()
click to toggle source
def theme_name
@theme_name || default_theme || "default"
end
title()
click to toggle source
def title
ts = title_slide
if ts
ts.title
else
"Rabbit"
end
end
title_slide()
click to toggle source
def title_slide
@slides.find{|x| x.is_a?(Element::TitleSlide)}
end
tmp_dir_name()
click to toggle source
def tmp_dir_name
@source and @source.tmp_dir_name
end
to_pixbuf(i)
click to toggle source
def to_pixbuf(i)
move_to_if_can(i)
current_slide.flush
@renderer.to_pixbuf(current_slide)
end
toggle_index_mode()
click to toggle source
def toggle_index_mode
@renderer.pre_toggle_index_mode
process do
if @index_mode
@index_mode = false
@renderer.index_mode_off
else
update_index_slides
@index_mode = true
@renderer.index_mode_on
end
modified
end
@renderer.post_toggle_index_mode
end
unfullscreened()
click to toggle source
def unfullscreened
@renderer.post_unfullscreen
end
update_index_slides()
click to toggle source
def update_index_slides
if @index_slides.empty?
@index_slides = Element::IndexSlide.make_index_slides(self)
end
end
use_gl?()
click to toggle source
with_index_mode(new_value) { || ... }
click to toggle source
def with_index_mode(new_value)
current_index_mode = @index_mode
@index_mode = new_value
update_index_slides if @index_mode
yield
ensure
@index_mode = current_index_mode
end