Module: QML::Reactive::Object::ClassMethods
- Included in:
- QML::Reactive::Object
- Defined in:
- lib/qml/reactive/object.rb
Instance Method Summary collapse
-
#alias_property(name, original_name) ⇒ Symbol
Aliases a property.
-
#alias_signal(name, original_name) ⇒ Symbol
Aliases a signal.
-
#instance_properties(include_super = true) ⇒ Array<Symbol>
Returns all property names for the class.
-
#instance_property(name) ⇒ QML::Reactive::UnboundProperty
Returns an unbound property.
-
#instance_signal(name) ⇒ QML::Reactive::UnboundSignal
Returns an unbound signal.
-
#instance_signals(include_super = true) ⇒ Array<Symbol>
Returns all signal names for the class.
-
#on(signal_name) { ... } ⇒ Object
Adds a signal handler.
-
#on_changed(property_name) { ... } ⇒ Object
Adds a handler to a property change signal.
-
#property(name, init_value = nil, opts = {}) { ... } ⇒ Symbol
Defines a property for the class.
-
#signal(name, params, opts = {}) ⇒ Symbol
Defines a signal for the class.
-
#variadic_signal(name, opts = {}) ⇒ Object
Defines a variadic signal.
Instance Method Details
#alias_property(name, original_name) ⇒ Symbol
Aliases a property.
207 208 209 210 |
# File 'lib/qml/reactive/object.rb', line 207 def alias_property(name, original_name) add_property(instance_property(original_name).alias(name)) name end |
#alias_signal(name, original_name) ⇒ Symbol
Aliases a signal.
171 172 173 174 |
# File 'lib/qml/reactive/object.rb', line 171 def alias_signal(name, original_name) add_signal(instance_signal(original_name).alias(name)) name end |
#instance_properties(include_super = true) ⇒ Array<Symbol>
Returns all property names for the class.
|
|
# File 'lib/qml/reactive/object.rb', line 95
|
#instance_property(name) ⇒ QML::Reactive::UnboundProperty
Returns an unbound property.
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/qml/reactive/object.rb', line 104 [%w{signal signals}, %w{property properties}].each do |singular, plural| class_eval " def instance_\#{singular}_hash(include_super = true)\n if include_super && superclass.include?(Object)\n superclass.instance_\#{singular}_hash.merge instance_\#{singular}_hash(false)\n else\n @instance_\#{singular}_hash ||= {}\n end\n end\n\n def instance_\#{plural}(include_super = true)\n instance_\#{singular}_hash(include_super).keys\n end\n\n def instance_\#{singular}(name)\n instance_\#{singular}_hash[name] or fail ::NameError, \"undefined \#{singular} '\\\#{name}' for class '\\\#{self}'\"\n end\n EOS\nend\n", __FILE__, __LINE__ + 1 |
#instance_signal(name) ⇒ QML::Reactive::UnboundSignal
Returns an unbound signal.
|
|
# File 'lib/qml/reactive/object.rb', line 90
|
#instance_signals(include_super = true) ⇒ Array<Symbol>
Returns all signal names for the class.
|
|
# File 'lib/qml/reactive/object.rb', line 85
|
#on(signal_name) { ... } ⇒ Object
Adds a signal handler.
215 216 217 218 219 220 221 |
# File 'lib/qml/reactive/object.rb', line 215 def on(signal_name, &block) # just for check instance_signal(signal_name) @initial_connections_hash ||= {} @initial_connections_hash[signal_name] ||= [] @initial_connections_hash[signal_name] << block end |
#on_changed(property_name) { ... } ⇒ Object
Adds a handler to a property change signal.
237 238 239 |
# File 'lib/qml/reactive/object.rb', line 237 def on_changed(property_name, &block) on(:"#{property_name}_changed", &block) end |
#property(name, init_value = nil, opts = {}) { ... } ⇒ Symbol
Defines a property for the class.
199 200 201 202 203 |
# File 'lib/qml/reactive/object.rb', line 199 def property(name, init_value = nil, opts = {}, &init_binding) name = name.to_sym add_property(UnboundProperty.new(name, init_value, init_binding, self, opts[:factory])) name end |
#signal(name, params, opts = {}) ⇒ Symbol
Defines a signal for the class. The signal will be variadic if args == nil.
151 152 153 154 155 156 |
# File 'lib/qml/reactive/object.rb', line 151 def signal(name, params, opts = {}) name.to_sym.tap do |name| params = params.map(&:to_sym) add_signal(UnboundSignal.new(name, params, false, self, opts[:factory])) end end |
#variadic_signal(name, opts = {}) ⇒ Object
Defines a variadic signal. Variadic signals do not restrict the number of arguments.
163 164 165 166 167 |
# File 'lib/qml/reactive/object.rb', line 163 def variadic_signal(name, opts = {}) name.to_sym.tap do |name| add_signal(UnboundSignal.new(name, nil, true, self, opts[:factory])) end end |