# File lib/clutter.rb, line 70 def initialize(base_module, init_arguments) super(base_module) @init_arguments = init_arguments @key_constants = {} @other_constant_infos = [] @event_infos = [] end
# File lib/clutter.rb, line 148 def load_constant_info(info) case info.name when /\AKEY_/ @key_constants[info.name] = true @keys_module.const_set(info.name, info.value) else @other_constant_infos << info end end
# File lib/clutter.rb, line 105 def load_events @event_infos.each do |event_info| define_struct(event_info, :parent => Event) end event_map = { EventType::KEY_PRESS => KeyEvent, EventType::KEY_RELEASE => KeyEvent, EventType::MOTION => MotionEvent, EventType::ENTER => CrossingEvent, EventType::LEAVE => CrossingEvent, EventType::BUTTON_PRESS => ButtonEvent, EventType::BUTTON_RELEASE => ButtonEvent, EventType::SCROLL => ScrollEvent, EventType::STAGE_STATE => StageStateEvent, EventType::TOUCH_UPDATE => TouchEvent, EventType::TOUCH_END => TouchEvent, EventType::TOUCH_CANCEL => TouchEvent, } self.class.register_boxed_class_converter(Event.gtype) do |event| event_map[event.type] || Event end end
# File lib/clutter.rb, line 136 def load_function_info(info) name = info.name case name when "init" # ignore when /\Athreads_/ define_module_function(@threads_module, $POSTMATCH, info) else super end end
# File lib/clutter.rb, line 128 def load_struct_info(info) if info.name.end_with?("Event") @event_infos << info else super end end
# File lib/clutter.rb, line 96 def post_load(repository, namespace) @other_constant_infos.each do |constant_info| name = constant_info.name next if @key_constants.has_key?("KEY_#{name}") @base_module.const_set(name, constant_info.value) end load_events end
# File lib/clutter.rb, line 79 def pre_load(repository, namespace) init = repository.find(namespace, "init") arguments = [ 1 + @init_arguments.size, [$0] + @init_arguments, ] error, argc, argv = init.invoke(arguments) @init_arguments.replace(argv) if error.to_i <= 0 raise InitError, "failed to initialize Clutter: #{error.name}" end @keys_module = Module.new @base_module.const_set("Keys", @keys_module) @threads_module = Module.new @base_module.const_set("Threads", @threads_module) end