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.
215 216 217 218 219 220 221 |
# File 'lib/qml/reactive/object.rb', line 215 def alias_property(name, original_name) name.to_sym.tap do |name| original_name = original_name.to_sym add_property(instance_property(original_name).alias(name)) alias_signal("#{name}_changed", "#{original_name}_changed") end end |
#alias_signal(name, original_name) ⇒ Symbol
Aliases a signal.
174 175 176 177 178 179 |
# File 'lib/qml/reactive/object.rb', line 174 def alias_signal(name, original_name) name.to_sym.tap do |name| original_name = original_name.to_sym add_signal(instance_signal(original_name).alias(name)) end end |
#instance_properties(include_super = true) ⇒ Array<Symbol>
Returns all property names for the class.
|
# File 'lib/qml/reactive/object.rb', line 96
|
#instance_property(name) ⇒ QML::Reactive::UnboundProperty
Returns an unbound property.
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/qml/reactive/object.rb', line 105 [%w{signal signals}, %w{property properties}].each do |singular, plural| class_eval <<-EOS, __FILE__, __LINE__ + 1 def instance_#{singular}_hash(include_super = true) if include_super && superclass.include?(Object) superclass.instance_#{singular}_hash.merge instance_#{singular}_hash(false) else @instance_#{singular}_hash ||= {} end end def instance_#{plural}(include_super = true) instance_#{singular}_hash(include_super).keys end def instance_#{singular}(name) instance_#{singular}_hash[name] or fail ::NameError, "undefined #{singular} '\#{name}' for class '\#{self}'" end EOS end |
#instance_signal(name) ⇒ QML::Reactive::UnboundSignal
Returns an unbound signal.
|
# File 'lib/qml/reactive/object.rb', line 91
|
#instance_signals(include_super = true) ⇒ Array<Symbol>
Returns all signal names for the class.
|
# File 'lib/qml/reactive/object.rb', line 86
|
#on(signal_name) { ... } ⇒ Object
Adds a signal handler.
226 227 228 229 230 231 232 |
# File 'lib/qml/reactive/object.rb', line 226 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.
248 249 250 |
# File 'lib/qml/reactive/object.rb', line 248 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.
204 205 206 207 208 209 |
# File 'lib/qml/reactive/object.rb', line 204 def property(name, init_value = nil, opts = {}, &init_binding) name.to_sym.tap do |name| add_property(UnboundProperty.new(name, init_value, init_binding, self, opts[:property])) signal("#{name}_changed", [:new_value], signal: -> { property(name).changed }) end end |
#signal(name, params, opts = {}) ⇒ Symbol
Defines a signal for the class. The signal will be variadic if args == nil.
152 153 154 155 156 157 |
# File 'lib/qml/reactive/object.rb', line 152 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[:signal])) end end |
#variadic_signal(name, opts = {}) ⇒ Object
Defines a variadic signal. Variadic signals do not restrict the number of arguments.
164 165 166 167 168 |
# File 'lib/qml/reactive/object.rb', line 164 def variadic_signal(name, opts = {}) name.to_sym.tap do |name| add_signal(UnboundSignal.new(name, nil, true, self, opts[:signal])) end end |