qml 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +57 -4
  3. data/changes.md +8 -0
  4. data/examples/fizzbuzz/fizzbuzz.rb +1 -1
  5. data/examples/imageprovider/imageprovider.rb +1 -1
  6. data/examples/todo_array/todo_array.rb +1 -1
  7. data/examples/todo_sequel/todo_sequel.rb +1 -1
  8. data/examples/twitter/twitter.rb +1 -1
  9. data/ext/qml/accessclass.cpp +5 -9
  10. data/ext/qml/conversionerror.h +14 -0
  11. data/ext/qml/ext_metaobject.cpp +30 -41
  12. data/ext/qml/init.cpp +5 -7
  13. data/ext/qml/rubyclass.cpp +6 -18
  14. data/ext/qml/rubyclass.h +22 -26
  15. data/ext/qml/rubyvalue.cpp +155 -221
  16. data/ext/qml/rubyvalue.h +30 -63
  17. data/ext/qml/signalforwarder.cpp +1 -3
  18. data/ext/qml/util.cpp +2 -25
  19. data/ext/qml/util.h +1 -21
  20. data/ext/qml/weakvaluereference.cpp +4 -5
  21. data/lib/qml/access.rb +9 -17
  22. data/lib/qml/application.rb +18 -21
  23. data/lib/qml/context.rb +1 -1
  24. data/lib/qml/dispatcher.rb +0 -1
  25. data/lib/qml/error_converter.rb +1 -0
  26. data/lib/qml/meta_object.rb +3 -3
  27. data/lib/qml/qt_object_base.rb +130 -5
  28. data/lib/qml/reactive/object.rb +34 -25
  29. data/lib/qml/reactive/signal.rb +6 -10
  30. data/lib/qml/reactive/unbound_property.rb +1 -1
  31. data/lib/qml/reactive/unbound_signal.rb +2 -2
  32. data/lib/qml/version.rb +1 -1
  33. data/spec/qml/reactive/object_spec.rb +14 -38
  34. data/spec/qml/reactive/signal_spec.rb +1 -1
  35. data/spec/qml/reactive/unbound_property_spec.rb +40 -0
  36. data/spec/qml/reactive/unbound_signal_spec.rb +70 -0
  37. data/spec/{shared_examples → shared}/qml/data/list_model.rb +0 -0
  38. data/spec/shared/qml/reactive/object.rb +39 -0
  39. data/spec/spec_helper.rb +1 -1
  40. metadata +12 -6
  41. data/lib/qml/class_builder.rb +0 -129
@@ -7,6 +7,6 @@ QML.init(offscreen: true)
7
7
 
8
8
  # QML::TestUtil.gc_debug_message_enabled = true
9
9
 
10
- Dir.glob(Pathname(__FILE__) +'../shared_examples/**/*.rb') do |f|
10
+ Dir.glob(Pathname(__FILE__) +'../shared/**/*.rb') do |f|
11
11
  require f
12
12
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryohei Ikegami
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-31 00:00:00.000000000 Z
11
+ date: 2014-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -160,6 +160,7 @@ files:
160
160
  - ext/qml/accessobject.cpp
161
161
  - ext/qml/accessobject.h
162
162
  - ext/qml/common.h
163
+ - ext/qml/conversionerror.h
163
164
  - ext/qml/ext_accesswrapperfactory.cpp
164
165
  - ext/qml/ext_accesswrapperfactory.h
165
166
  - ext/qml/ext_anywrapper.cpp
@@ -239,7 +240,6 @@ files:
239
240
  - lib/qml.rb
240
241
  - lib/qml/access.rb
241
242
  - lib/qml/application.rb
242
- - lib/qml/class_builder.rb
243
243
  - lib/qml/component.rb
244
244
  - lib/qml/context.rb
245
245
  - lib/qml/data.rb
@@ -311,10 +311,13 @@ files:
311
311
  - spec/qml/reactive/property_spec.rb
312
312
  - spec/qml/reactive/signal_spec.rb
313
313
  - spec/qml/reactive/signal_spy_spec.rb
314
+ - spec/qml/reactive/unbound_property_spec.rb
315
+ - spec/qml/reactive/unbound_signal_spec.rb
314
316
  - spec/qml/test_object_spec.rb
315
317
  - spec/qml/wrappable_spec.rb
316
318
  - spec/qml_spec.rb
317
- - spec/shared_examples/qml/data/list_model.rb
319
+ - spec/shared/qml/data/list_model.rb
320
+ - spec/shared/qml/reactive/object.rb
318
321
  - spec/spec_helper.rb
319
322
  homepage: http://seanchas116.github.io/ruby-qml/
320
323
  licenses:
@@ -336,7 +339,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
336
339
  version: '0'
337
340
  requirements: []
338
341
  rubyforge_project:
339
- rubygems_version: 2.2.2
342
+ rubygems_version: 2.4.1
340
343
  signing_key:
341
344
  specification_version: 4
342
345
  summary: A QML / Qt Quick wrapper for Ruby
@@ -364,9 +367,12 @@ test_files:
364
367
  - spec/qml/reactive/property_spec.rb
365
368
  - spec/qml/reactive/signal_spec.rb
366
369
  - spec/qml/reactive/signal_spy_spec.rb
370
+ - spec/qml/reactive/unbound_property_spec.rb
371
+ - spec/qml/reactive/unbound_signal_spec.rb
367
372
  - spec/qml/test_object_spec.rb
368
373
  - spec/qml/wrappable_spec.rb
369
374
  - spec/qml_spec.rb
370
- - spec/shared_examples/qml/data/list_model.rb
375
+ - spec/shared/qml/data/list_model.rb
376
+ - spec/shared/qml/reactive/object.rb
371
377
  - spec/spec_helper.rb
372
378
  has_rdoc:
@@ -1,129 +0,0 @@
1
- require 'logger'
2
- require 'qml/qt_object_base'
3
- require 'qml/qml'
4
- require 'qml/name_helper'
5
-
6
- module QML
7
-
8
- class QtPropertyBase
9
- attr_reader :changed
10
-
11
- def initialize(metaobj, objptr, name)
12
- super()
13
- @metaobj = metaobj
14
- @objptr = objptr
15
- @name = name
16
- @changed = QtSignal.new(metaobj, objptr, @metaobj.notify_signal(@name))
17
- end
18
-
19
- def value=(newval)
20
- @metaobj.set_property(@objptr, @name, newval)
21
- end
22
-
23
- def value
24
- @metaobj.get_property(@objptr, @name)
25
- end
26
- end
27
-
28
- class QtProperty < QtPropertyBase
29
- include Reactive::Bindable
30
- end
31
-
32
- class QtSignal < Reactive::Signal
33
- def initialize(metaobj, objptr, name)
34
- super([], variadic: true)
35
- @objptr = objptr
36
- @metaobj = metaobj
37
- @name = name
38
- @initialized = false
39
- end
40
-
41
- private
42
-
43
- def connected(block)
44
- return if @initialized
45
- @metaobj.connect_signal(@objptr, @name, method(:emit))
46
- @initialized = true
47
- end
48
- end
49
-
50
- class ClassBuilder
51
-
52
- attr_reader :metaobj, :klass
53
-
54
- def initialize(metaobj, klass)
55
- @metaobj = metaobj
56
- @klass = klass
57
- end
58
-
59
- def build
60
- create unless @klass
61
- return if @klass.meta_object == @metaobj
62
-
63
- @metaobj.method_names.reject { |name| @metaobj.signal?(name) }.each do |name|
64
- define_method(name)
65
- end
66
- @metaobj.method_names.select { |name| @metaobj.signal?(name) }.each do |name|
67
- define_signal(name)
68
- end
69
- @metaobj.property_names.each do |name|
70
- define_property(name)
71
- end
72
- @metaobj.enumerators.each do |k, v|
73
- define_enum(k, v)
74
- end
75
- @klass.__send__ :meta_object=, @metaobj
76
-
77
- self
78
- end
79
-
80
- private
81
-
82
- def create
83
- super_metaobj = @metaobj.super_class
84
- @klass = Class.new(super_metaobj ? super_metaobj.build_class : QtObjectBase)
85
- end
86
-
87
- def define_method(name)
88
- metaobj = @metaobj
89
- return if metaobj.private?(name)
90
- @klass.__send__ :define_method, name do |*args|
91
- metaobj.invoke_method(@pointer, name, args)
92
- end
93
- @klass.__send__ :private, name if @metaobj.protected?(name)
94
- underscore = NameHelper.to_underscore(name)
95
- @klass.__send__ :alias_method, underscore, name if underscore != name
96
- end
97
-
98
- def define_signal(name)
99
- @klass.__send__ :variadic_signal, name, factory: proc { |obj|
100
- QtSignal.new(@metaobj, obj.pointer, name)
101
- }
102
- underscore = NameHelper.to_underscore(name)
103
- @klass.__send__ :alias_signal, underscore, name if underscore != name
104
- end
105
-
106
- def define_property(name)
107
- metaobj = @metaobj
108
- @klass.__send__ :property, name, nil, factory: proc { |obj|
109
- QtProperty.new(@metaobj, obj.pointer, name)
110
- }
111
- underscore = NameHelper.to_underscore(name)
112
- @klass.__send__ :alias_property, underscore, name if underscore != name
113
- end
114
-
115
- def define_enum(name, hash)
116
- define_const(name, hash.values.sort)
117
- hash.each do |k, v|
118
- define_const(k, v)
119
- end
120
- end
121
-
122
- def define_const(name, value)
123
- name = (name[0].capitalize + name[1..-1]).to_sym
124
- @klass.__send__ :const_set, name, value
125
- underscore = NameHelper.to_upper_underscore(name)
126
- @klass.__send__ :const_set, underscore, value if underscore != name
127
- end
128
- end
129
- end