qml 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
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