qml 0.0.1

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 (170) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +46 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +15 -0
  5. data/.yardopts +4 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +22 -0
  8. data/README.md +351 -0
  9. data/Rakefile +6 -0
  10. data/examples/assets/fonts/fontawesome-webfont.ttf +0 -0
  11. data/examples/fizzbuzz/fizzbuzz.rb +43 -0
  12. data/examples/fizzbuzz/main.qml +38 -0
  13. data/examples/imageprovider/imageprovider.rb +57 -0
  14. data/examples/imageprovider/main.qml +51 -0
  15. data/examples/todo/main.qml +70 -0
  16. data/examples/todo/todo.rb +36 -0
  17. data/examples/twitter/main.qml +36 -0
  18. data/examples/twitter/twitter.rb +55 -0
  19. data/ext/qml/accessclass.cpp +71 -0
  20. data/ext/qml/accessclass.h +19 -0
  21. data/ext/qml/accessobject.cpp +30 -0
  22. data/ext/qml/accessobject.h +22 -0
  23. data/ext/qml/application.cpp +54 -0
  24. data/ext/qml/application.h +17 -0
  25. data/ext/qml/common.h +18 -0
  26. data/ext/qml/ext_accesssupport.cpp +77 -0
  27. data/ext/qml/ext_accesssupport.h +42 -0
  28. data/ext/qml/ext_gcmarker.cpp +39 -0
  29. data/ext/qml/ext_gcmarker.h +27 -0
  30. data/ext/qml/ext_kernel.cpp +62 -0
  31. data/ext/qml/ext_kernel.h +11 -0
  32. data/ext/qml/ext_metaobject.cpp +410 -0
  33. data/ext/qml/ext_metaobject.h +62 -0
  34. data/ext/qml/ext_pluginloader.cpp +55 -0
  35. data/ext/qml/ext_pluginloader.h +32 -0
  36. data/ext/qml/ext_pointer.cpp +134 -0
  37. data/ext/qml/ext_pointer.h +43 -0
  38. data/ext/qml/ext_testutil.cpp +42 -0
  39. data/ext/qml/ext_testutil.h +11 -0
  40. data/ext/qml/extconf.rb +84 -0
  41. data/ext/qml/foreignclass.cpp +72 -0
  42. data/ext/qml/foreignclass.h +88 -0
  43. data/ext/qml/foreignmetaobject.cpp +345 -0
  44. data/ext/qml/foreignmetaobject.h +46 -0
  45. data/ext/qml/foreignobject.cpp +22 -0
  46. data/ext/qml/foreignobject.h +21 -0
  47. data/ext/qml/functioninfo.h +16 -0
  48. data/ext/qml/init.cpp +69 -0
  49. data/ext/qml/listmodel.cpp +112 -0
  50. data/ext/qml/listmodel.h +43 -0
  51. data/ext/qml/markable.h +12 -0
  52. data/ext/qml/objectdata.cpp +26 -0
  53. data/ext/qml/objectdata.h +20 -0
  54. data/ext/qml/objectgc.cpp +69 -0
  55. data/ext/qml/objectgc.h +28 -0
  56. data/ext/qml/plugins/core/applicationextension.cpp +34 -0
  57. data/ext/qml/plugins/core/applicationextension.h +28 -0
  58. data/ext/qml/plugins/core/componentextension.cpp +41 -0
  59. data/ext/qml/plugins/core/componentextension.h +28 -0
  60. data/ext/qml/plugins/core/contextextension.cpp +39 -0
  61. data/ext/qml/plugins/core/contextextension.h +29 -0
  62. data/ext/qml/plugins/core/core.pro +29 -0
  63. data/ext/qml/plugins/core/coreplugin.cpp +87 -0
  64. data/ext/qml/plugins/core/coreplugin.h +49 -0
  65. data/ext/qml/plugins/core/engineextension.cpp +27 -0
  66. data/ext/qml/plugins/core/engineextension.h +28 -0
  67. data/ext/qml/plugins/core/imageprovider.cpp +38 -0
  68. data/ext/qml/plugins/core/imageprovider.h +18 -0
  69. data/ext/qml/plugins/core/imagerequestpromise.cpp +19 -0
  70. data/ext/qml/plugins/core/imagerequestpromise.h +21 -0
  71. data/ext/qml/plugins/core/qmlexception.cpp +11 -0
  72. data/ext/qml/plugins/core/qmlexception.h +17 -0
  73. data/ext/qml/plugins/testutil/objectlifechecker.cpp +17 -0
  74. data/ext/qml/plugins/testutil/objectlifechecker.h +24 -0
  75. data/ext/qml/plugins/testutil/ownershiptest.cpp +26 -0
  76. data/ext/qml/plugins/testutil/ownershiptest.h +30 -0
  77. data/ext/qml/plugins/testutil/testobject.cpp +6 -0
  78. data/ext/qml/plugins/testutil/testobject.h +108 -0
  79. data/ext/qml/plugins/testutil/testobjectsubclass.cpp +10 -0
  80. data/ext/qml/plugins/testutil/testobjectsubclass.h +19 -0
  81. data/ext/qml/plugins/testutil/testutil.pro +20 -0
  82. data/ext/qml/plugins/testutil/testutilplugin.cpp +47 -0
  83. data/ext/qml/plugins/testutil/testutilplugin.h +32 -0
  84. data/ext/qml/qmltyperegisterer.cpp +74 -0
  85. data/ext/qml/qmltyperegisterer.h +30 -0
  86. data/ext/qml/rubyclass.cpp +94 -0
  87. data/ext/qml/rubyclass.h +234 -0
  88. data/ext/qml/rubyvalue.cpp +690 -0
  89. data/ext/qml/rubyvalue.h +256 -0
  90. data/ext/qml/signalforwarder.cpp +66 -0
  91. data/ext/qml/signalforwarder.h +29 -0
  92. data/ext/qml/util.cpp +120 -0
  93. data/ext/qml/util.h +101 -0
  94. data/ext/qml/valuereference.cpp +50 -0
  95. data/ext/qml/valuereference.h +22 -0
  96. data/ext/qml/weakvaluereference.cpp +27 -0
  97. data/ext/qml/weakvaluereference.h +19 -0
  98. data/lib/qml.rb +41 -0
  99. data/lib/qml/access.rb +137 -0
  100. data/lib/qml/application.rb +139 -0
  101. data/lib/qml/class_builder.rb +126 -0
  102. data/lib/qml/component.rb +53 -0
  103. data/lib/qml/context.rb +71 -0
  104. data/lib/qml/data.rb +2 -0
  105. data/lib/qml/data/array_model.rb +103 -0
  106. data/lib/qml/data/error.rb +5 -0
  107. data/lib/qml/data/list_model.rb +146 -0
  108. data/lib/qml/dispatchable.rb +34 -0
  109. data/lib/qml/dispatcher.rb +61 -0
  110. data/lib/qml/engine.rb +54 -0
  111. data/lib/qml/error_converter.rb +15 -0
  112. data/lib/qml/errors.rb +26 -0
  113. data/lib/qml/geometry.rb +3 -0
  114. data/lib/qml/geometry/point.rb +5 -0
  115. data/lib/qml/geometry/rectangle.rb +5 -0
  116. data/lib/qml/geometry/size.rb +5 -0
  117. data/lib/qml/image_provider.rb +87 -0
  118. data/lib/qml/meta_object.rb +20 -0
  119. data/lib/qml/models.rb +1 -0
  120. data/lib/qml/name_helper.rb +12 -0
  121. data/lib/qml/platform.rb +15 -0
  122. data/lib/qml/plugin_loader.rb +46 -0
  123. data/lib/qml/plugins.rb +26 -0
  124. data/lib/qml/qml.rb +1 -0
  125. data/lib/qml/qt.rb +6 -0
  126. data/lib/qml/qt_classes.rb +9 -0
  127. data/lib/qml/qt_object_base.rb +108 -0
  128. data/lib/qml/reactive.rb +8 -0
  129. data/lib/qml/reactive/bindable.rb +79 -0
  130. data/lib/qml/reactive/chained_signal.rb +25 -0
  131. data/lib/qml/reactive/error.rb +5 -0
  132. data/lib/qml/reactive/object.rb +278 -0
  133. data/lib/qml/reactive/property.rb +19 -0
  134. data/lib/qml/reactive/signal.rb +116 -0
  135. data/lib/qml/reactive/signal_spy.rb +27 -0
  136. data/lib/qml/reactive/signals/map_signal.rb +21 -0
  137. data/lib/qml/reactive/signals/merge_signal.rb +21 -0
  138. data/lib/qml/reactive/signals/select_signal.rb +21 -0
  139. data/lib/qml/reactive/simple_property.rb +17 -0
  140. data/lib/qml/reactive/unbound_property.rb +42 -0
  141. data/lib/qml/reactive/unbound_signal.rb +51 -0
  142. data/lib/qml/root_path.rb +3 -0
  143. data/lib/qml/test_util.rb +1 -0
  144. data/lib/qml/test_util/object_life_checker.rb +17 -0
  145. data/lib/qml/version.rb +3 -0
  146. data/lib/qml/wrappable.rb +9 -0
  147. data/qml.gemspec +28 -0
  148. data/spec/assets/testobj.qml +5 -0
  149. data/spec/qml/.access_spec.rb.swp +0 -0
  150. data/spec/qml/access_spec.rb +162 -0
  151. data/spec/qml/application_spec.rb +43 -0
  152. data/spec/qml/component_spec.rb +44 -0
  153. data/spec/qml/context_spec.rb +43 -0
  154. data/spec/qml/conversion_spec.rb +59 -0
  155. data/spec/qml/data/array_model_spec.rb +215 -0
  156. data/spec/qml/dispatchable_spec.rb +26 -0
  157. data/spec/qml/dispatcher_spec.rb +48 -0
  158. data/spec/qml/geometry/point_spec.rb +4 -0
  159. data/spec/qml/geometry/rectangle_spec.rb +4 -0
  160. data/spec/qml/geometry/size_spec.rb +4 -0
  161. data/spec/qml/plugin_loader_spec.rb +33 -0
  162. data/spec/qml/qt_object_base_spec.rb +119 -0
  163. data/spec/qml/reactive/object_spec.rb +273 -0
  164. data/spec/qml/reactive/property_spec.rb +70 -0
  165. data/spec/qml/reactive/signal_spec.rb +191 -0
  166. data/spec/qml/reactive/signal_spy_spec.rb +26 -0
  167. data/spec/qml/test_object_spec.rb +186 -0
  168. data/spec/qml_spec.rb +7 -0
  169. data/spec/spec_helper.rb +5 -0
  170. metadata +321 -0
@@ -0,0 +1,191 @@
1
+ require 'spec_helper'
2
+
3
+ describe QML::Reactive::Signal do
4
+
5
+ before do
6
+ @signal = QML::Reactive::Signal.new(:foo, :bar)
7
+ @variadic_signal = QML::Reactive::Signal.new(variadic: true)
8
+ end
9
+
10
+ describe 'connection' do
11
+
12
+ describe '#connect, #emit' do
13
+
14
+ context 'when non-variadic' do
15
+
16
+ before do
17
+ @signal.connect { |foo, bar| @received = [foo, bar] }
18
+ end
19
+
20
+ it 'connects a block and calls it' do
21
+ @signal.emit('apple', 'orange')
22
+ expect(@received).to eq(['apple', 'orange'])
23
+ end
24
+
25
+ context 'when the number of arguments is wrong' do
26
+ it 'fails with an ArgumentError' do
27
+ expect { @signal.emit('apple') }.to raise_error(ArgumentError)
28
+ end
29
+ end
30
+ end
31
+
32
+ context 'when variadic' do
33
+
34
+ it 'connects a block and calls it' do
35
+ received = nil
36
+ @variadic_signal.connect { |foo, bar| received = [foo, bar] }
37
+ @variadic_signal.emit('apple', 'orange')
38
+ expect(received).to eq(['apple', 'orange'])
39
+ end
40
+ end
41
+
42
+ it 'calls connected blocks in the order they have been conncted' do
43
+ received = []
44
+ @signal.connect { received << 'first' }
45
+ @signal.connect { received << 'second' }
46
+ @signal.emit('foo', 'bar')
47
+ expect(received).to eq(['first', 'second'])
48
+ end
49
+ end
50
+
51
+ describe '#each' do
52
+ it 'is an alias of #connect' do
53
+ expect(@signal.method(:each)).to eq @signal.method(:connect)
54
+ end
55
+ end
56
+
57
+ describe '::Connection#disconnect' do
58
+
59
+ it 'disconnects the connection' do
60
+ connection = @signal.connect { |foo, bar| @received = foo + bar }
61
+ @signal.emit('apple', 'orange')
62
+ connection.disconnect
63
+ @signal.emit('banana', 'grape')
64
+ expect(@received).to eq('appleorange')
65
+ end
66
+
67
+ it 'disconnects the whole chained connections if possible' do
68
+ signal = QML::Reactive::Signal.new :arg
69
+ mapped = signal.map { |arg| arg * 2 }
70
+
71
+ connection = mapped.connect {}
72
+
73
+ connection.disconnect
74
+ expect(signal.connection_count).to eq(0)
75
+ end
76
+ end
77
+
78
+ describe '#connection_count' do
79
+ it 'returns the number of connections' do
80
+ prc1 = ->(foo, bar) {}
81
+ prc2 = ->(foo, bar) {}
82
+ @signal.connect(&prc1)
83
+ @signal.connect(&prc2)
84
+ expect(@signal.connection_count).to eq(2)
85
+ end
86
+ end
87
+ end
88
+
89
+ describe 'attributes' do
90
+
91
+ describe '#arity' do
92
+
93
+ context 'when non-variadic' do
94
+ it 'returns the number of arguments' do
95
+ expect(@signal.arity).to eq(2)
96
+ end
97
+ end
98
+
99
+ context 'when variadic' do
100
+ it 'returns the number of arguments' do
101
+ expect(@variadic_signal.arity).to eq(-1)
102
+ end
103
+ end
104
+ end
105
+
106
+ describe '#parameters' do
107
+
108
+ context 'when non-variadic' do
109
+ it 'returns the parameter information' do
110
+ expect(@signal.parameters).to eq([[:req, :foo], [:req, :bar]])
111
+ end
112
+ end
113
+
114
+ context 'when variadic' do
115
+ it 'returns the parameter information' do
116
+ expect(@variadic_signal.parameters).to eq([[:rest, :args]])
117
+ end
118
+ end
119
+ end
120
+ end
121
+
122
+ describe 'alternatives for #emit' do
123
+
124
+ before do
125
+ @signal.connect { |foo, bar| @received = foo + bar }
126
+ end
127
+
128
+ describe '#to_proc' do
129
+ it 'returns a Proc that emits the original signal' do
130
+ prc = @signal.to_proc
131
+ prc.call('foo', 'bar')
132
+ expect(prc).to be_a(Proc)
133
+ expect(@received).to eq('foobar')
134
+ end
135
+ end
136
+
137
+ describe '#[]' do
138
+ it 'is an alias of #emit' do
139
+ @signal["some", "text"]
140
+ expect(@received).to eq("sometext")
141
+ end
142
+ end
143
+
144
+ describe '#call' do
145
+ it 'is an alias of #emit' do
146
+ @signal.call("some", "text")
147
+ expect(@received).to eq("sometext")
148
+ end
149
+ end
150
+ end
151
+
152
+ describe 'transformations' do
153
+
154
+ describe '#map' do
155
+ it 'returns another Signal that transforms the original signal parameters' do
156
+ received = nil
157
+ @signal
158
+ .map { |foo, bar| foo * bar }
159
+ .connect { |arg| received = arg }
160
+ @signal.emit(20, 30)
161
+ expect(received).to eq(600)
162
+ end
163
+ end
164
+
165
+ describe '#select' do
166
+ it 'returns another Signal which is filtered by the given block' do
167
+ count = 0
168
+ @signal.select { |foo| foo % 2 == 0 } .connect { count += 1 }
169
+ 10.times { |i| @signal.emit(i, i) }
170
+ expect(count).to eq(5)
171
+ end
172
+ end
173
+
174
+ describe '#merge' do
175
+ it 'merges multiple signals' do
176
+ received = []
177
+
178
+ signal = QML::Reactive::Signal.new :foo
179
+ signal2 = QML::Reactive::Signal.new :foo
180
+ signal.merge(signal2).connect { |foo| received << foo }
181
+
182
+ signal.emit(:one)
183
+ signal2.emit(:two)
184
+ signal.emit(:three)
185
+ expect(received).to eq([:one, :two, :three])
186
+ end
187
+ end
188
+ end
189
+ end
190
+
191
+
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ describe QML::Reactive::SignalSpy do
4
+
5
+ it 'records signal emittion' do
6
+ signal = QML::Reactive::Signal.new(:arg1, :arg2)
7
+ spy = QML::Reactive::SignalSpy.new(signal)
8
+ signal.emit(10, 20)
9
+ signal.emit('foo', 'bar')
10
+ expect(spy.args).to eq([[10, 20], ['foo', 'bar']])
11
+ end
12
+
13
+ end
14
+
15
+ describe QML::Reactive::Signal do
16
+
17
+ describe '#spy' do
18
+ it 'returns a SignalSpy for the signal' do
19
+ signal = QML::Reactive::Signal.new(:arg1, :arg2)
20
+ spy = signal.spy
21
+ signal.emit(10, 20)
22
+ signal.emit('foo', 'bar')
23
+ expect(spy.args).to eq([[10, 20], ['foo', 'bar']])
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,186 @@
1
+ require 'spec_helper'
2
+
3
+ describe "test object" do
4
+
5
+ let(:plugin) { QML::Plugins.test_util }
6
+ let(:obj) { plugin.createTestObject }
7
+
8
+ describe '#normalMethod' do
9
+
10
+ it 'should call the method' do
11
+ expect(obj.normalMethod(1, "23")).to eq(24)
12
+ end
13
+
14
+ context 'if the arguments are not convertible' do
15
+ it 'should raise error' do
16
+ expect { obj.normalMethod([1, 2], 'bar') }.to raise_error QML::MethodError
17
+ end
18
+ end
19
+
20
+ context 'if the number of arguments is wrong' do
21
+ it 'should raise error' do
22
+ expect { obj.normalMethod(1) }.to raise_error QML::MethodError
23
+ end
24
+ end
25
+ end
26
+
27
+ describe '#normal_method' do
28
+ it 'is same as #normalMethod' do
29
+ expect(obj.normalMethod(1, "23")).to eq(24)
30
+ end
31
+ end
32
+
33
+ describe '#variantMethod' do
34
+
35
+ it 'should call the method with QVariant arguments' do
36
+ expect(obj.variantMethod(20, [1, 3, 4, 9])).to eq(37)
37
+ end
38
+ end
39
+
40
+ describe '#overloadedMethod' do
41
+
42
+ it 'should call the method with the same arity' do
43
+ expect(obj.overloadedMethod('foo', 1)).to eq('2 params')
44
+ end
45
+
46
+ context 'when multiple methods with the same arity are provided' do
47
+
48
+ it 'should call the method defined last' do
49
+ expect(obj.overloadedMethod('hoge')).to eq('last')
50
+ end
51
+ end
52
+ end
53
+
54
+ describe '#someSignal signal' do
55
+
56
+ it 'should emit the signal' do
57
+ spy = QML::Reactive::SignalSpy.new(obj.someSignal)
58
+ obj.emitSomeSignal('poyopoyo')
59
+ expect(spy.args.first).to eq(['poyopoyo'])
60
+ end
61
+ end
62
+
63
+ describe '#some_signal signal' do
64
+
65
+ it 'is same as #someSignal' do
66
+ spy = QML::Reactive::SignalSpy.new(obj.some_signal)
67
+ obj.emit_some_signal('poyopoyo')
68
+ expect(spy.args.first).to eq(['poyopoyo'])
69
+ end
70
+ end
71
+
72
+ describe '#throwingMethod' do
73
+ it 'raises a QML::CxxError' do
74
+ expect { obj.throwingMethod }.to raise_error(QML::CppError, "<std::runtime_error> test error")
75
+ end
76
+ end
77
+
78
+ describe '#metaObjectMethod' do
79
+ it 'returns the QML::MetaObject of the test object' do
80
+ expect(obj.metaObjectMethod).to eq obj.class.meta_object
81
+ end
82
+ end
83
+
84
+ describe '#selfReturningMethod' do
85
+ it 'returns the same Ruby object' do
86
+ expect(obj.selfReturningMethod).to be obj
87
+ end
88
+ end
89
+
90
+ describe '#name property' do
91
+
92
+ it 'should be set' do
93
+ obj.name = 'abcd'
94
+ expect(obj.getName).to eq('abcd')
95
+ end
96
+
97
+ it 'should notify when changed' do
98
+ spy = QML::Reactive::SignalSpy.new(obj.name_changed)
99
+ obj.name = 'hogepoyo'
100
+ expect(spy.args.first).to eq(['hogepoyo'])
101
+ end
102
+
103
+ context 'with wrong type' do
104
+
105
+ it 'raise error' do
106
+ expect { obj.name = 123 }.to raise_error QML::PropertyError
107
+ end
108
+ end
109
+ end
110
+
111
+ describe '#someValue property' do
112
+ context 'as #some_value' do
113
+ it 'can be set and get' do
114
+ obj.some_value = 123
115
+ expect(obj.some_value).to eq 123
116
+ end
117
+ end
118
+ end
119
+
120
+ describe 'enums' do
121
+
122
+ it 'should be set' do
123
+ k = obj.class
124
+ expect(k::Foo).to eq(0)
125
+ expect(k::Bar).to eq(1)
126
+ expect(k::FooBar).to eq(2)
127
+ expect(k::FOO_BAR).to eq(2)
128
+ expect(k::Enums).to match_array [0,1,2]
129
+ end
130
+
131
+ it 'can be set and get' do
132
+ obj.enum_value = obj.class::FOO_BAR
133
+ expect(obj.enum_value).to eq(obj.class::FOO_BAR)
134
+ end
135
+ end
136
+
137
+ describe 'QtObjectBase#inspect' do
138
+ it 'inspects the class name and property values' do
139
+ expect(obj.inspect).to eq %{#<[class for RubyQml::TestObject]:#{obj.__id__} enumValue=0 name="" objectName="" someValue=0.0>}
140
+ end
141
+ end
142
+
143
+ context 'in subclass' do
144
+ let(:subobj) { plugin.createTestObject }
145
+ it "can call TestObject's method" do
146
+ expect(subobj.normalMethod(1, "23")).to eq(24)
147
+ end
148
+ end
149
+
150
+ context 'in non-main threads' do
151
+
152
+ require 'celluloid'
153
+
154
+ class TestCaller
155
+ include Celluloid
156
+
157
+ def initialize(obj)
158
+ @obj = obj
159
+ end
160
+
161
+ def call(method, *args)
162
+ @obj.public_send(method, *args)
163
+ rescue => e
164
+ e
165
+ end
166
+ end
167
+
168
+ let(:test_caller) { TestCaller.new(obj) }
169
+
170
+ describe '#normal_method' do
171
+ it 'fails' do
172
+ expect(test_caller.call(:normal_method, 1, "23")).to be_a QML::InvalidThreadError
173
+ end
174
+ end
175
+ describe '#name' do
176
+ it 'fails' do
177
+ expect(test_caller.call(:name)).to be_a QML::InvalidThreadError
178
+ end
179
+ end
180
+ describe '#name=' do
181
+ it 'fails' do
182
+ expect(test_caller.call(:name=, "hoge")).to be_a QML::InvalidThreadError
183
+ end
184
+ end
185
+ end
186
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe QML do
4
+ it 'should have a version number' do
5
+ expect(QML::VERSION).not_to be_nil
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+ require 'qml'
3
+ QML.init(offscreen: true)
4
+
5
+ # QML::TestUtil.gc_debug_message_enabled = true
metadata ADDED
@@ -0,0 +1,321 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: qml
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Ryohei Ikegami
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-07-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.5'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '10.3'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '10.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: celluloid
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: twitter
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: ruby-qml provides bindings between QML and Ruby and enables you to use
98
+ Qt Quick-based GUI from Ruby.
99
+ email:
100
+ - iofg2100@gmail.com
101
+ executables: []
102
+ extensions:
103
+ - ext/qml/extconf.rb
104
+ extra_rdoc_files: []
105
+ files:
106
+ - .gitignore
107
+ - .rspec
108
+ - .travis.yml
109
+ - .yardopts
110
+ - Gemfile
111
+ - LICENSE.txt
112
+ - README.md
113
+ - Rakefile
114
+ - examples/assets/fonts/fontawesome-webfont.ttf
115
+ - examples/fizzbuzz/fizzbuzz.rb
116
+ - examples/fizzbuzz/main.qml
117
+ - examples/imageprovider/imageprovider.rb
118
+ - examples/imageprovider/main.qml
119
+ - examples/todo/main.qml
120
+ - examples/todo/todo.rb
121
+ - examples/twitter/main.qml
122
+ - examples/twitter/twitter.rb
123
+ - ext/qml/accessclass.cpp
124
+ - ext/qml/accessclass.h
125
+ - ext/qml/accessobject.cpp
126
+ - ext/qml/accessobject.h
127
+ - ext/qml/application.cpp
128
+ - ext/qml/application.h
129
+ - ext/qml/common.h
130
+ - ext/qml/ext_accesssupport.cpp
131
+ - ext/qml/ext_accesssupport.h
132
+ - ext/qml/ext_gcmarker.cpp
133
+ - ext/qml/ext_gcmarker.h
134
+ - ext/qml/ext_kernel.cpp
135
+ - ext/qml/ext_kernel.h
136
+ - ext/qml/ext_metaobject.cpp
137
+ - ext/qml/ext_metaobject.h
138
+ - ext/qml/ext_pluginloader.cpp
139
+ - ext/qml/ext_pluginloader.h
140
+ - ext/qml/ext_pointer.cpp
141
+ - ext/qml/ext_pointer.h
142
+ - ext/qml/ext_testutil.cpp
143
+ - ext/qml/ext_testutil.h
144
+ - ext/qml/extconf.rb
145
+ - ext/qml/foreignclass.cpp
146
+ - ext/qml/foreignclass.h
147
+ - ext/qml/foreignmetaobject.cpp
148
+ - ext/qml/foreignmetaobject.h
149
+ - ext/qml/foreignobject.cpp
150
+ - ext/qml/foreignobject.h
151
+ - ext/qml/functioninfo.h
152
+ - ext/qml/init.cpp
153
+ - ext/qml/listmodel.cpp
154
+ - ext/qml/listmodel.h
155
+ - ext/qml/markable.h
156
+ - ext/qml/objectdata.cpp
157
+ - ext/qml/objectdata.h
158
+ - ext/qml/objectgc.cpp
159
+ - ext/qml/objectgc.h
160
+ - ext/qml/plugins/core/applicationextension.cpp
161
+ - ext/qml/plugins/core/applicationextension.h
162
+ - ext/qml/plugins/core/componentextension.cpp
163
+ - ext/qml/plugins/core/componentextension.h
164
+ - ext/qml/plugins/core/contextextension.cpp
165
+ - ext/qml/plugins/core/contextextension.h
166
+ - ext/qml/plugins/core/core.pro
167
+ - ext/qml/plugins/core/coreplugin.cpp
168
+ - ext/qml/plugins/core/coreplugin.h
169
+ - ext/qml/plugins/core/engineextension.cpp
170
+ - ext/qml/plugins/core/engineextension.h
171
+ - ext/qml/plugins/core/imageprovider.cpp
172
+ - ext/qml/plugins/core/imageprovider.h
173
+ - ext/qml/plugins/core/imagerequestpromise.cpp
174
+ - ext/qml/plugins/core/imagerequestpromise.h
175
+ - ext/qml/plugins/core/qmlexception.cpp
176
+ - ext/qml/plugins/core/qmlexception.h
177
+ - ext/qml/plugins/testutil/objectlifechecker.cpp
178
+ - ext/qml/plugins/testutil/objectlifechecker.h
179
+ - ext/qml/plugins/testutil/ownershiptest.cpp
180
+ - ext/qml/plugins/testutil/ownershiptest.h
181
+ - ext/qml/plugins/testutil/testobject.cpp
182
+ - ext/qml/plugins/testutil/testobject.h
183
+ - ext/qml/plugins/testutil/testobjectsubclass.cpp
184
+ - ext/qml/plugins/testutil/testobjectsubclass.h
185
+ - ext/qml/plugins/testutil/testutil.pro
186
+ - ext/qml/plugins/testutil/testutilplugin.cpp
187
+ - ext/qml/plugins/testutil/testutilplugin.h
188
+ - ext/qml/qmltyperegisterer.cpp
189
+ - ext/qml/qmltyperegisterer.h
190
+ - ext/qml/rubyclass.cpp
191
+ - ext/qml/rubyclass.h
192
+ - ext/qml/rubyvalue.cpp
193
+ - ext/qml/rubyvalue.h
194
+ - ext/qml/signalforwarder.cpp
195
+ - ext/qml/signalforwarder.h
196
+ - ext/qml/util.cpp
197
+ - ext/qml/util.h
198
+ - ext/qml/valuereference.cpp
199
+ - ext/qml/valuereference.h
200
+ - ext/qml/weakvaluereference.cpp
201
+ - ext/qml/weakvaluereference.h
202
+ - lib/qml.rb
203
+ - lib/qml/access.rb
204
+ - lib/qml/application.rb
205
+ - lib/qml/class_builder.rb
206
+ - lib/qml/component.rb
207
+ - lib/qml/context.rb
208
+ - lib/qml/data.rb
209
+ - lib/qml/data/array_model.rb
210
+ - lib/qml/data/error.rb
211
+ - lib/qml/data/list_model.rb
212
+ - lib/qml/dispatchable.rb
213
+ - lib/qml/dispatcher.rb
214
+ - lib/qml/engine.rb
215
+ - lib/qml/error_converter.rb
216
+ - lib/qml/errors.rb
217
+ - lib/qml/geometry.rb
218
+ - lib/qml/geometry/point.rb
219
+ - lib/qml/geometry/rectangle.rb
220
+ - lib/qml/geometry/size.rb
221
+ - lib/qml/image_provider.rb
222
+ - lib/qml/meta_object.rb
223
+ - lib/qml/models.rb
224
+ - lib/qml/name_helper.rb
225
+ - lib/qml/platform.rb
226
+ - lib/qml/plugin_loader.rb
227
+ - lib/qml/plugins.rb
228
+ - lib/qml/qml.rb
229
+ - lib/qml/qt.rb
230
+ - lib/qml/qt_classes.rb
231
+ - lib/qml/qt_object_base.rb
232
+ - lib/qml/reactive.rb
233
+ - lib/qml/reactive/bindable.rb
234
+ - lib/qml/reactive/chained_signal.rb
235
+ - lib/qml/reactive/error.rb
236
+ - lib/qml/reactive/object.rb
237
+ - lib/qml/reactive/property.rb
238
+ - lib/qml/reactive/signal.rb
239
+ - lib/qml/reactive/signal_spy.rb
240
+ - lib/qml/reactive/signals/map_signal.rb
241
+ - lib/qml/reactive/signals/merge_signal.rb
242
+ - lib/qml/reactive/signals/select_signal.rb
243
+ - lib/qml/reactive/simple_property.rb
244
+ - lib/qml/reactive/unbound_property.rb
245
+ - lib/qml/reactive/unbound_signal.rb
246
+ - lib/qml/root_path.rb
247
+ - lib/qml/test_util.rb
248
+ - lib/qml/test_util/object_life_checker.rb
249
+ - lib/qml/version.rb
250
+ - lib/qml/wrappable.rb
251
+ - qml.gemspec
252
+ - spec/assets/testobj.qml
253
+ - spec/qml/.access_spec.rb.swp
254
+ - spec/qml/access_spec.rb
255
+ - spec/qml/application_spec.rb
256
+ - spec/qml/component_spec.rb
257
+ - spec/qml/context_spec.rb
258
+ - spec/qml/conversion_spec.rb
259
+ - spec/qml/data/array_model_spec.rb
260
+ - spec/qml/dispatchable_spec.rb
261
+ - spec/qml/dispatcher_spec.rb
262
+ - spec/qml/geometry/point_spec.rb
263
+ - spec/qml/geometry/rectangle_spec.rb
264
+ - spec/qml/geometry/size_spec.rb
265
+ - spec/qml/plugin_loader_spec.rb
266
+ - spec/qml/qt_object_base_spec.rb
267
+ - spec/qml/reactive/object_spec.rb
268
+ - spec/qml/reactive/property_spec.rb
269
+ - spec/qml/reactive/signal_spec.rb
270
+ - spec/qml/reactive/signal_spy_spec.rb
271
+ - spec/qml/test_object_spec.rb
272
+ - spec/qml_spec.rb
273
+ - spec/spec_helper.rb
274
+ homepage: https://github.com/seanchas116/ruby-qml
275
+ licenses:
276
+ - MIT
277
+ metadata: {}
278
+ post_install_message:
279
+ rdoc_options: []
280
+ require_paths:
281
+ - lib
282
+ required_ruby_version: !ruby/object:Gem::Requirement
283
+ requirements:
284
+ - - '>='
285
+ - !ruby/object:Gem::Version
286
+ version: '0'
287
+ required_rubygems_version: !ruby/object:Gem::Requirement
288
+ requirements:
289
+ - - '>='
290
+ - !ruby/object:Gem::Version
291
+ version: '0'
292
+ requirements: []
293
+ rubyforge_project:
294
+ rubygems_version: 2.0.14
295
+ signing_key:
296
+ specification_version: 4
297
+ summary: A QML / Qt Quick wrapper for Ruby
298
+ test_files:
299
+ - spec/assets/testobj.qml
300
+ - spec/qml/.access_spec.rb.swp
301
+ - spec/qml/access_spec.rb
302
+ - spec/qml/application_spec.rb
303
+ - spec/qml/component_spec.rb
304
+ - spec/qml/context_spec.rb
305
+ - spec/qml/conversion_spec.rb
306
+ - spec/qml/data/array_model_spec.rb
307
+ - spec/qml/dispatchable_spec.rb
308
+ - spec/qml/dispatcher_spec.rb
309
+ - spec/qml/geometry/point_spec.rb
310
+ - spec/qml/geometry/rectangle_spec.rb
311
+ - spec/qml/geometry/size_spec.rb
312
+ - spec/qml/plugin_loader_spec.rb
313
+ - spec/qml/qt_object_base_spec.rb
314
+ - spec/qml/reactive/object_spec.rb
315
+ - spec/qml/reactive/property_spec.rb
316
+ - spec/qml/reactive/signal_spec.rb
317
+ - spec/qml/reactive/signal_spy_spec.rb
318
+ - spec/qml/test_object_spec.rb
319
+ - spec/qml_spec.rb
320
+ - spec/spec_helper.rb
321
+ has_rdoc: