Those constants are meaningless. :p
# File lib/rabbit/theme/applier.rb, line 235 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 303 def [](name) instance_variable_get("@#{name}") end
# File lib/rabbit/theme/applier.rb, line 249 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 259 def make_container(ary) ElementContainer.new(self, ary) end
# File lib/rabbit/theme/applier.rb, line 275 def normalized_height NORMALIZED_HEIGHT / Canvas::INTERNAL_DPI end
# File lib/rabbit/theme/applier.rb, line 279 def normalized_size(s) ((s / canvas.width.to_f) * normalized_width).ceil end
# File lib/rabbit/theme/applier.rb, line 271 def normalized_width NORMALIZED_WIDTH / Canvas::INTERNAL_DPI end
# File lib/rabbit/theme/applier.rb, line 283 def normalized_x(sx) ((sx / canvas.width.to_f) * normalized_width).ceil end
# File lib/rabbit/theme/applier.rb, line 287 def normalized_y(sy) ((sy / canvas.height.to_f) * normalized_height).ceil end
# File lib/rabbit/theme/applier.rb, line 291 def screen_size(n) ((canvas.width * n) / normalized_width).ceil end
# File lib/rabbit/theme/applier.rb, line 295 def screen_x(nx) ((canvas.width * nx) / normalized_width).ceil end
# File lib/rabbit/theme/applier.rb, line 299 def screen_y(ny) ((canvas.height * ny) / normalized_height).ceil end
# File lib/rabbit/theme/applier.rb, line 263 def to_container(obj) if obj.is_a?(ElementContainer) obj else make_container([obj]) end end
# File lib/rabbit/theme/applier.rb, line 448 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 484 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 393 def activate(name, &block) canvas.activate(name, &block) end
# File lib/rabbit/theme/applier.rb, line 389 def add_gesture_action(sequence, action=Proc.new) canvas.add_gesture_action(sequence, action) end
# File lib/rabbit/theme/applier.rb, line 490 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 629 def base_directory canvas.full_path(".") end
# File lib/rabbit/theme/applier.rb, line 336 def canvas @theme.canvas end
# File lib/rabbit/theme/applier.rb, line 593 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 603 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 588 def dirtied @callback.call if @callback super end
# File lib/rabbit/theme/applier.rb, line 599 def disconnect_key(keyval, modifier=nil) canvas.disconnect_key(keyval, modifier) end
# File lib/rabbit/theme/applier.rb, line 348 def display? canvas.display? end
# File lib/rabbit/theme/applier.rb, line 541 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 527 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 521 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 535 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 617 def entity(key) Parser::Ext::Entity::TABLE[key] end
# File lib/rabbit/theme/applier.rb, line 401 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 397 def font_families canvas.font_families.collect {|family| family.name} end
# File lib/rabbit/theme/applier.rb, line 505 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 621 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 637 def image_load_path super + [base_directory].compact end
# File lib/rabbit/theme/applier.rb, line 316 def include_theme(name) begin apply_theme(name) rescue ThemeExit info($!.message) if $!.have_message? end end
# File lib/rabbit/theme/applier.rb, line 515 def indent(*args, &block) split_targets(args) do |targets, args| targets.indent(*args, &block) end end
# File lib/rabbit/theme/applier.rb, line 340 def logger canvas.logger end
# File lib/rabbit/theme/applier.rb, line 427 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 440 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 328 def name @theme.name end
# File lib/rabbit/theme/applier.rb, line 308 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 344 def print? canvas.printable? end
# File lib/rabbit/theme/applier.rb, line 423 def quartz? Utils.quartz? end
# File lib/rabbit/theme/applier.rb, line 364 def set_background(color) canvas.background = canvas.make_color(color) end
# File lib/rabbit/theme/applier.rb, line 368 def set_background_image(filename) loader = ImageLoader.new(find_file(filename)) canvas.background_image = loader.pixbuf end
# File lib/rabbit/theme/applier.rb, line 411 def set_font_family(target, family=@font_family) target.prop_set("font_family", family) if family end
# File lib/rabbit/theme/applier.rb, line 415 def set_font_resolution_ratio(ratio) canvas.font_resolution_ratio = ratio end
# File lib/rabbit/theme/applier.rb, line 360 def set_foreground(color) canvas.foreground = canvas.make_color(color) end
# File lib/rabbit/theme/applier.rb, line 381 def set_graffiti_color(color) canvas.graffiti_color = Renderer::Color.parse(color) end
# File lib/rabbit/theme/applier.rb, line 385 def set_graffiti_line_width(line_width) canvas.graffiti_line_width = line_width end
# File lib/rabbit/theme/applier.rb, line 377 def set_progress_background(color) canvas.progress_background = canvas.make_color(color) end
# File lib/rabbit/theme/applier.rb, line 373 def set_progress_foreground(*color) canvas.progress_foreground = canvas.make_color(*color) end
# File lib/rabbit/theme/applier.rb, line 332 def slides @theme.slides end
# File lib/rabbit/theme/applier.rb, line 356 def slides_per_page canvas.slides_per_page end
# File lib/rabbit/theme/applier.rb, line 613 def span(attributes, content) tag("span", attributes, content) end
# File lib/rabbit/theme/applier.rb, line 547 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 559 def start_auto_redraw_timer(interval) canvas.start_auto_redraw_timer(interval) end
# File lib/rabbit/theme/applier.rb, line 577 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 567 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 562 def stop_auto_redraw_timer canvas.stop_auto_redraw_timer end
# File lib/rabbit/theme/applier.rb, line 582 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 572 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 609 def tag(name, attributes, content) "<#{name} #{to_attrs(attributes)}>#{content}</#{name}>" end
# File lib/rabbit/theme/applier.rb, line 352 def theme_exit(message=nil) raise ThemeExit.new(message) end
# File lib/rabbit/theme/applier.rb, line 633 def theme_load_path super + [base_directory].compact end
# File lib/rabbit/theme/applier.rb, line 324 def to_attrs(hash) canvas.to_attrs(hash) end
# File lib/rabbit/theme/applier.rb, line 419 def windows? Utils.windows? end