Those constants are meaningless. :p
# File lib/rabbit/theme/applier.rb, line 240 def initialize(theme, &callback) super() @theme = theme @callback = callback dirty_count_clean @match_cache = {} @current_target = nil class << slides def elements self end end end
# File lib/rabbit/theme/applier.rb, line 308 def [](name) instance_variable_get("@#{name}") end
# File lib/rabbit/theme/applier.rb, line 254 def apply_theme(name) entry = find_theme(name) src = File.open(entry.theme_file, "r:utf-8") do |f| f.read end in_theme(entry) do instance_eval(normalize_source(src), entry.theme_file) end end
# File lib/rabbit/theme/applier.rb, line 264 def make_container(ary) ElementContainer.new(self, ary) end
# File lib/rabbit/theme/applier.rb, line 280 def normalized_height NORMALIZED_HEIGHT / Canvas::INTERNAL_DPI end
# File lib/rabbit/theme/applier.rb, line 284 def normalized_size(s) ((s / canvas.width.to_f) * normalized_width).ceil end
# File lib/rabbit/theme/applier.rb, line 276 def normalized_width NORMALIZED_WIDTH / Canvas::INTERNAL_DPI end
# File lib/rabbit/theme/applier.rb, line 288 def normalized_x(sx) ((sx / canvas.width.to_f) * normalized_width).ceil end
# File lib/rabbit/theme/applier.rb, line 292 def normalized_y(sy) ((sy / canvas.height.to_f) * normalized_height).ceil end
# File lib/rabbit/theme/applier.rb, line 296 def screen_size(n) ((canvas.width * n) / normalized_width).ceil end
# File lib/rabbit/theme/applier.rb, line 300 def screen_x(nx) ((canvas.width * nx) / normalized_width).ceil end
# File lib/rabbit/theme/applier.rb, line 304 def screen_y(ny) ((canvas.height * ny) / normalized_height).ceil end
# File lib/rabbit/theme/applier.rb, line 268 def to_container(obj) if obj.is_a?(ElementContainer) obj else make_container([obj]) end end
# File lib/rabbit/theme/applier.rb, line 453 def _match(current, *paths) last_path_index = paths.size - 1 paths.each_with_index do |path, i| current = _match_with_cache(current, path, i == last_path_index) do current = ignore_wait_block(current) unless i == last_path_index if path.nil? slides elsif path == "**" all_sub_elements(current) else if path == "*" working = current # all OK else working = current.find_all do |element| path === element end end if i != last_path_index working.inject([]) do |result, elem| if elem.respond_to?(:elements) result + elem.elements else result << elem end end else working end end end end current end
# File lib/rabbit/theme/applier.rb, line 489 def _match_with_cache(current, path, last_path) key = [current, path, last_path] @match_cache[key] ||= yield @match_cache[key] end
# File lib/rabbit/theme/applier.rb, line 398 def activate(name, &block) canvas.activate(name, &block) end
# File lib/rabbit/theme/applier.rb, line 394 def add_gesture_action(sequence, action=Proc.new) canvas.add_gesture_action(sequence, action) end
# File lib/rabbit/theme/applier.rb, line 495 def all_sub_elements(element) if element.respond_to?(:inject) if element.respond_to?(:elements) elems = element.elements else elems = element end elems.inject([]) do |result, elem| (result << elem) + all_sub_elements(elem) end else [] end end
# File lib/rabbit/theme/applier.rb, line 634 def base_directory canvas.full_path(".") end
# File lib/rabbit/theme/applier.rb, line 341 def canvas @theme.canvas end
# File lib/rabbit/theme/applier.rb, line 598 def connect_key(keyval, modifier=nil, flags=nil, &block) modifier ||= Gdk::Window::ModifierType.new flags ||= Gtk::AccelFlags::VISIBLE canvas.connect_key(keyval, modifier, flags, &block) end
# File lib/rabbit/theme/applier.rb, line 608 def deprecated_method(current, deprecated) format = _("%s is deprecated. Use %s instead.") message = format % [deprecated, current] warning(message) end
# File lib/rabbit/theme/applier.rb, line 593 def dirtied @callback.call if @callback super end
# File lib/rabbit/theme/applier.rb, line 604 def disconnect_key(keyval, modifier=nil) canvas.disconnect_key(keyval, modifier) end
# File lib/rabbit/theme/applier.rb, line 353 def display? canvas.display? end
# File lib/rabbit/theme/applier.rb, line 546 def draw_frame(*args, &block) split_targets(args) do |targets, args| targets.draw_frame(*args, &block) end end
# File lib/rabbit/theme/applier.rb, line 532 def draw_image_mark(*args, &block) split_targets(args) do |targets, args| image_name, *args = args image_name = find_file(image_name) targets.draw_image_mark(image_name, *args, &block) end end
# File lib/rabbit/theme/applier.rb, line 526 def draw_mark(*args, &block) split_targets(args) do |targets, args| targets.draw_mark(*args, &block) end end
# File lib/rabbit/theme/applier.rb, line 540 def draw_order(*args, &block) split_targets(args) do |targets, args| targets.draw_order(*args, &block) end end
# File lib/rabbit/theme/applier.rb, line 622 def entity(key) Parser::Ext::Entity::TABLE[key] end
# File lib/rabbit/theme/applier.rb, line 406 def find_font_family(target_name) families = font_families.grep(/#{Regexp.escape(target_name)}/) return nil if families.empty? if families.include?(target_name) target_name else families.first end end
# File lib/rabbit/theme/applier.rb, line 402 def font_families canvas.font_families.collect {|family| family.name} end
# File lib/rabbit/theme/applier.rb, line 510 def ignore_wait_block(elements) elements.inject([]) do |result, element| if element.is_a?(WaitBlock) result + ignore_wait_block(element.elements) else result + [element] end end end
# File lib/rabbit/theme/applier.rb, line 626 def image_element(path, properties={}) image = Parser::Ext::Image.make_image(canvas, path, properties) if image.nil? raise ImageFileDoesNotExistError.new(path) end image end
# File lib/rabbit/theme/applier.rb, line 642 def image_load_path super + [base_directory].compact end
# File lib/rabbit/theme/applier.rb, line 321 def include_theme(name) begin apply_theme(name) rescue ThemeExit info($!.message) if $!.have_message? end end
# File lib/rabbit/theme/applier.rb, line 520 def indent(*args, &block) split_targets(args) do |targets, args| targets.indent(*args, &block) end end
# File lib/rabbit/theme/applier.rb, line 345 def logger canvas.logger end
# File lib/rabbit/theme/applier.rb, line 432 def match(*paths, &block) dirty targets = _match(slides, *paths) return if targets.empty? begin @current_target = make_container(targets) block.call(@current_target) ensure @current_target = nil end end
# File lib/rabbit/theme/applier.rb, line 445 def method_missing(meth, *args, &block) if @current_target @current_target.__send__(meth, *args, &block) else super end end
# File lib/rabbit/theme/applier.rb, line 333 def name @theme.name end
# File lib/rabbit/theme/applier.rb, line 313 def normalize_source(src) src.gsub(/(?=^|\W)@(very_)?huge_(script_)?font_size(?=$|\W)/) do |x| x = "x" x *= 2 unless $1.nil? "@#{x}_large_#{$2}font_size" end end
# File lib/rabbit/theme/applier.rb, line 349 def print? canvas.printable? end
# File lib/rabbit/theme/applier.rb, line 428 def quartz? Utils.quartz? end
# File lib/rabbit/theme/applier.rb, line 369 def set_background(color) canvas.background = canvas.make_color(color) end
# File lib/rabbit/theme/applier.rb, line 373 def set_background_image(filename) loader = ImageLoader.new(find_file(filename)) canvas.background_image = loader.pixbuf end
# File lib/rabbit/theme/applier.rb, line 416 def set_font_family(target, family=@font_family) target.prop_set("font_family", family) if family end
# File lib/rabbit/theme/applier.rb, line 420 def set_font_resolution_ratio(ratio) canvas.font_resolution_ratio = ratio end
# File lib/rabbit/theme/applier.rb, line 365 def set_foreground(color) canvas.foreground = canvas.make_color(color) end
# File lib/rabbit/theme/applier.rb, line 386 def set_graffiti_color(color) canvas.graffiti_color = Renderer::Color.parse(color) end
# File lib/rabbit/theme/applier.rb, line 390 def set_graffiti_line_width(line_width) canvas.graffiti_line_width = line_width end
# File lib/rabbit/theme/applier.rb, line 382 def set_progress_background(color) canvas.progress_background = canvas.make_color(color) end
# File lib/rabbit/theme/applier.rb, line 378 def set_progress_foreground(*color) canvas.progress_foreground = canvas.make_color(*color) end
# File lib/rabbit/theme/applier.rb, line 337 def slides @theme.slides end
# File lib/rabbit/theme/applier.rb, line 361 def slides_per_page canvas.slides_per_page end
# File lib/rabbit/theme/applier.rb, line 618 def span(attributes, content) tag("span", attributes, content) end
# File lib/rabbit/theme/applier.rb, line 552 def split_targets(args) if args.empty? or !(args.first.is_a?(Element::Base) or args.first.is_a?(ElementContainer)) targets = @current_target else targets, *args = args end yield [to_container(targets), args] end
# File lib/rabbit/theme/applier.rb, line 564 def start_auto_redraw_timer(interval) canvas.start_auto_redraw_timer(interval) end
# File lib/rabbit/theme/applier.rb, line 582 def start_auto_reload_thread(interval) deprecated_method("start_auto_redraw_timer", "start_auto_reload_thread") start_auto_redraw_timer(interval) end
For backward compatibility
# File lib/rabbit/theme/applier.rb, line 572 def start_auto_reload_timer(interval) deprecated_method("start_auto_redraw_timer", "start_auto_reload_timer") canvas.start_auto_redraw_timer(interval) end
# File lib/rabbit/theme/applier.rb, line 567 def stop_auto_redraw_timer canvas.stop_auto_redraw_timer end
# File lib/rabbit/theme/applier.rb, line 587 def stop_auto_reload_thread deprecated_method("stop_auto_redraw_timer", "stop_auto_reload_thread") stop_auto_redraw_timer end
# File lib/rabbit/theme/applier.rb, line 577 def stop_auto_reload_timer deprecated_method("stop_auto_redraw_timer", "stop_auto_reload_timer") canvas.stop_auto_redraw_timer end
# File lib/rabbit/theme/applier.rb, line 614 def tag(name, attributes, content) "<#{name} #{to_attrs(attributes)}>#{content}</#{name}>" end
# File lib/rabbit/theme/applier.rb, line 357 def theme_exit(message=nil) raise ThemeExit.new(message) end
# File lib/rabbit/theme/applier.rb, line 638 def theme_load_path super + [base_directory].compact end
# File lib/rabbit/theme/applier.rb, line 329 def to_attrs(hash) canvas.to_attrs(hash) end
# File lib/rabbit/theme/applier.rb, line 424 def windows? Utils.windows? end