Module: Qt
- Defined in:
- lib/qtjruby-core/qt.rb,
lib/qtjruby-core/version.rb,
lib/qtjruby-core/qt/ext/object.rb,
lib/qtjruby-core/qt/ext/application.rb
Defined Under Namespace
Modules: Ext, JRuby Classes: JambiClass
Class Method Summary collapse
-
.const_missing(name) ⇒ Object
Create a Qt::JRuby class from a Qt Jambi class.
Class Method Details
.const_missing(name) ⇒ Object
Create a Qt::JRuby class from a Qt Jambi class.
Parameters
- name<String>
-
The name of the class to create.
Returns
- Class
-
The newly created Qt::JRuby class.
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/qtjruby-core/qt.rb', line 32 def const_missing(name) klass = Class.new(Qt::JambiClass.for_name(name)) klass.class_eval do include Qt::Ext.const_get(name) if Qt::Ext.const_defined?(name) self.superclass.java_class.fields.each do |field| self.class_eval %{ alias :old_#{field.name} :#{field.name} def #{field.name}(*args, &block) Qt::Object.connect(self.old_#{field.name}, self.method('slot'), &block) end alias :#{field.name.snake_case} :#{field.name} } if field.type.to_s =~ /QSignalEmitter/ end protected def slot(*args, &block) block.call(*args) if block_given? end end const_set(name, klass) end |