qml 0.0.7 → 1.0.0

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 (296) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +3 -0
  3. data/.travis.yml +5 -9
  4. data/LICENSE.txt +1 -1
  5. data/README.md +84 -114
  6. data/changes.md +5 -0
  7. data/examples/fizzbuzz/fizzbuzz.rb +3 -4
  8. data/examples/todo_array/todo_array.rb +4 -4
  9. data/examples/todo_sequel/todo_sequel.rb +7 -7
  10. data/examples/twitter/twitter.rb +5 -3
  11. data/ext/qml/application.c +88 -0
  12. data/ext/qml/application.h +9 -0
  13. data/ext/qml/component.c +89 -0
  14. data/ext/qml/component.h +10 -0
  15. data/ext/qml/conversion.c +60 -0
  16. data/ext/qml/conversion.h +8 -0
  17. data/ext/qml/dispatcher.c +31 -0
  18. data/ext/qml/dispatcher.h +7 -0
  19. data/ext/qml/engine.c +135 -0
  20. data/ext/qml/engine.h +10 -0
  21. data/ext/qml/exporter.c +93 -0
  22. data/ext/qml/exporter.h +7 -0
  23. data/ext/qml/extconf.rb +38 -97
  24. data/ext/qml/interface.c +156 -0
  25. data/ext/qml/interface.h +11 -0
  26. data/ext/qml/js_array.c +47 -0
  27. data/ext/qml/js_array.h +7 -0
  28. data/ext/qml/js_function.c +109 -0
  29. data/ext/qml/js_function.h +7 -0
  30. data/ext/qml/js_object.c +284 -0
  31. data/ext/qml/js_object.h +19 -0
  32. data/ext/qml/js_wrapper.c +19 -0
  33. data/ext/qml/js_wrapper.h +7 -0
  34. data/ext/qml/lib/libqmlbind/.gitignore +38 -0
  35. data/ext/qml/lib/libqmlbind/.gitmodules +3 -0
  36. data/ext/qml/lib/libqmlbind/.travis.yml +14 -0
  37. data/ext/qml/lib/libqmlbind/LICENSE.txt +22 -0
  38. data/ext/qml/lib/libqmlbind/libqmlbind.pro +3 -0
  39. data/ext/qml/lib/libqmlbind/qmlbind/include/qmlbind.h +14 -0
  40. data/ext/qml/lib/libqmlbind/qmlbind/include/qmlbind/application.h +18 -0
  41. data/ext/qml/lib/libqmlbind/qmlbind/include/qmlbind/component.h +21 -0
  42. data/ext/qml/lib/libqmlbind/qmlbind/include/qmlbind/engine.h +34 -0
  43. data/ext/qml/lib/libqmlbind/qmlbind/include/qmlbind/exporter.h +37 -0
  44. data/ext/qml/lib/libqmlbind/qmlbind/include/qmlbind/interface.h +16 -0
  45. data/ext/qml/lib/libqmlbind/qmlbind/include/qmlbind/iterator.h +19 -0
  46. data/ext/qml/lib/libqmlbind/qmlbind/include/qmlbind/metaobject.h +13 -0
  47. data/ext/qml/lib/libqmlbind/qmlbind/include/qmlbind/plugin.h +17 -0
  48. data/ext/qml/lib/libqmlbind/qmlbind/include/qmlbind/qmlbind_global.h +78 -0
  49. data/ext/qml/lib/libqmlbind/qmlbind/include/qmlbind/register.h +17 -0
  50. data/ext/qml/lib/libqmlbind/qmlbind/include/qmlbind/signal_emitter.h +15 -0
  51. data/ext/qml/lib/libqmlbind/qmlbind/include/qmlbind/string.h +15 -0
  52. data/ext/qml/lib/libqmlbind/qmlbind/include/qmlbind/value.h +100 -0
  53. data/ext/qml/lib/libqmlbind/qmlbind/qmlbind.pro +62 -0
  54. data/ext/qml/lib/libqmlbind/qmlbind/src/api_application.cpp +103 -0
  55. data/ext/qml/lib/libqmlbind/qmlbind/src/api_component.cpp +54 -0
  56. data/ext/qml/lib/libqmlbind/qmlbind/src/api_engine.cpp +65 -0
  57. data/ext/qml/lib/libqmlbind/qmlbind/src/api_exporter.cpp +52 -0
  58. data/ext/qml/lib/libqmlbind/qmlbind/src/api_interface.cpp +19 -0
  59. data/ext/qml/lib/libqmlbind/qmlbind/src/api_iterator.cpp +32 -0
  60. data/ext/qml/lib/libqmlbind/qmlbind/src/api_metaobject.cpp +19 -0
  61. data/ext/qml/lib/libqmlbind/qmlbind/src/api_plugin.cpp +27 -0
  62. data/ext/qml/lib/libqmlbind/qmlbind/src/api_register.cpp +17 -0
  63. data/ext/qml/lib/libqmlbind/qmlbind/src/api_signal_emitter.cpp +27 -0
  64. data/ext/qml/lib/libqmlbind/qmlbind/src/api_string.cpp +22 -0
  65. data/ext/qml/lib/libqmlbind/qmlbind/src/api_value.cpp +215 -0
  66. data/ext/qml/lib/libqmlbind/qmlbind/src/backref.cpp +54 -0
  67. data/ext/qml/lib/libqmlbind/qmlbind/src/backref.h +29 -0
  68. data/ext/qml/lib/libqmlbind/qmlbind/src/engine.cpp +32 -0
  69. data/ext/qml/lib/libqmlbind/qmlbind/src/engine.h +27 -0
  70. data/ext/qml/lib/libqmlbind/qmlbind/src/exporter.cpp +73 -0
  71. data/ext/qml/lib/libqmlbind/qmlbind/src/exporter.h +46 -0
  72. data/ext/qml/lib/libqmlbind/qmlbind/src/interface.cpp +75 -0
  73. data/ext/qml/lib/libqmlbind/qmlbind/src/interface.h +37 -0
  74. data/ext/qml/lib/libqmlbind/qmlbind/src/metaobject.cpp +101 -0
  75. data/ext/qml/lib/libqmlbind/qmlbind/src/metaobject.h +29 -0
  76. data/ext/qml/lib/libqmlbind/qmlbind/src/signalemitter.cpp +33 -0
  77. data/ext/qml/lib/libqmlbind/qmlbind/src/signalemitter.h +25 -0
  78. data/ext/qml/lib/libqmlbind/qmlbind/src/ticktimer.cpp +15 -0
  79. data/ext/qml/lib/libqmlbind/qmlbind/src/ticktimer.h +19 -0
  80. data/ext/qml/lib/libqmlbind/qmlbind/src/typeregisterer.cpp +112 -0
  81. data/ext/qml/lib/libqmlbind/qmlbind/src/typeregisterer.h +28 -0
  82. data/ext/qml/lib/libqmlbind/qmlbind/src/util.h +13 -0
  83. data/ext/qml/lib/libqmlbind/qmlbind/src/wrapper.cpp +23 -0
  84. data/ext/qml/lib/libqmlbind/qmlbind/src/wrapper.h +29 -0
  85. data/ext/qml/lib/libqmlbind/readme.md +14 -0
  86. data/ext/qml/lib/libqmlbind/test/api.c +1 -0
  87. data/ext/qml/lib/libqmlbind/test/application_test.cpp +16 -0
  88. data/ext/qml/lib/libqmlbind/test/component_test.cpp +57 -0
  89. data/ext/qml/lib/libqmlbind/test/engine_test.cpp +94 -0
  90. data/ext/qml/lib/libqmlbind/test/exporter_test.cpp +312 -0
  91. data/ext/qml/lib/libqmlbind/test/fixtures/emptyhandlers.cpp +36 -0
  92. data/ext/qml/lib/libqmlbind/test/fixtures/emptyhandlers.h +6 -0
  93. data/ext/qml/lib/libqmlbind/test/fixtures/test.qml +5 -0
  94. data/ext/qml/lib/libqmlbind/test/fixtures/testmodule/qmldir +2 -0
  95. data/ext/qml/lib/libqmlbind/test/fixtures/testmodule/test.qml +5 -0
  96. data/ext/qml/lib/libqmlbind/test/iterator_test.cpp +37 -0
  97. data/ext/qml/lib/libqmlbind/test/main.cpp +11 -0
  98. data/ext/qml/lib/libqmlbind/test/plugin_test.cpp +41 -0
  99. data/ext/qml/lib/libqmlbind/test/test.pro +26 -0
  100. data/ext/qml/lib/libqmlbind/test/test_helper.h +20 -0
  101. data/ext/qml/lib/libqmlbind/test/value_test.cpp +252 -0
  102. data/ext/qml/lib/libqmlbind/testplugin/testplugin.cpp +11 -0
  103. data/ext/qml/lib/libqmlbind/testplugin/testplugin.h +21 -0
  104. data/ext/qml/lib/libqmlbind/testplugin/testplugin.json +3 -0
  105. data/ext/qml/lib/libqmlbind/testplugin/testplugin.pro +21 -0
  106. data/ext/qml/meta_object.c +81 -0
  107. data/ext/qml/meta_object.h +8 -0
  108. data/ext/qml/plugin_loader.c +71 -0
  109. data/ext/qml/plugin_loader.h +7 -0
  110. data/ext/qml/qml.c +95 -0
  111. data/ext/qml/qml.h +10 -0
  112. data/ext/qml/rubyqml-plugin/listmodel.cpp +102 -0
  113. data/ext/qml/rubyqml-plugin/listmodel.h +37 -0
  114. data/ext/qml/rubyqml-plugin/rubyqml-plugin.pro +19 -0
  115. data/ext/qml/rubyqml-plugin/rubyqmlplugin.cpp +25 -0
  116. data/ext/qml/rubyqml-plugin/rubyqmlplugin.h +19 -0
  117. data/ext/qml/signal_emitter.c +71 -0
  118. data/ext/qml/signal_emitter.h +9 -0
  119. data/lib/qml.rb +11 -10
  120. data/lib/qml/access.rb +64 -86
  121. data/lib/qml/application.rb +20 -71
  122. data/lib/qml/component.rb +41 -33
  123. data/lib/qml/core_ext.rb +1 -0
  124. data/lib/qml/core_ext/to_qml.rb +70 -0
  125. data/lib/qml/data.rb +1 -0
  126. data/lib/qml/data/array_model.rb +99 -101
  127. data/lib/qml/data/list_model.rb +107 -131
  128. data/lib/qml/data/list_model_access.rb +44 -0
  129. data/lib/qml/data/query_model.rb +45 -47
  130. data/lib/qml/dispatcher.rb +5 -13
  131. data/lib/qml/engine.rb +9 -58
  132. data/lib/qml/errors.rb +0 -21
  133. data/lib/qml/interface.rb +21 -0
  134. data/lib/qml/js_array.rb +8 -0
  135. data/lib/qml/js_object.rb +69 -0
  136. data/lib/qml/js_util.rb +18 -0
  137. data/lib/qml/plugin_loader.rb +1 -13
  138. data/lib/qml/plugins.rb +3 -17
  139. data/lib/qml/proc_access.rb +28 -0
  140. data/lib/qml/qt.rb +21 -3
  141. data/lib/qml/reactive.rb +147 -8
  142. data/lib/qml/signal.rb +67 -0
  143. data/lib/qml/version.rb +1 -1
  144. data/qml.gemspec +8 -2
  145. data/spec/qml/access_spec.rb +33 -120
  146. data/spec/qml/application_spec.rb +11 -24
  147. data/spec/qml/component_spec.rb +4 -4
  148. data/spec/qml/data/array_model_spec.rb +2 -2
  149. data/spec/qml/data/list_model_spec.rb +2 -2
  150. data/spec/qml/data/query_model_spec.rb +4 -4
  151. data/spec/qml/engine_spec.rb +23 -21
  152. data/spec/qml/interface_spec.rb +20 -0
  153. data/spec/qml/js_array_spec.rb +29 -0
  154. data/spec/qml/js_function_spec.rb +32 -0
  155. data/spec/qml/js_object_spec.rb +113 -0
  156. data/spec/qml/plugin_loader_spec.rb +9 -11
  157. data/spec/qml/qt_spec.rb +9 -0
  158. data/spec/qml/reactive_spec.rb +37 -0
  159. data/spec/qml/signal_connect_spec.rb +27 -0
  160. data/spec/qml/signal_spec.rb +73 -0
  161. data/spec/qml/to_qml_spec.rb +76 -0
  162. data/spec/shared/qml/access_example.rb +21 -0
  163. data/spec/shared/qml/data/list_model.rb +12 -13
  164. data/spec/spec_helper.rb +2 -3
  165. metadata +141 -166
  166. data/examples/imageprovider/imageprovider.rb +0 -57
  167. data/examples/imageprovider/main.qml +0 -51
  168. data/ext/qml/accessclass.cpp +0 -65
  169. data/ext/qml/accessclass.h +0 -19
  170. data/ext/qml/accessobject.cpp +0 -30
  171. data/ext/qml/accessobject.h +0 -22
  172. data/ext/qml/common.h +0 -18
  173. data/ext/qml/conversionerror.h +0 -14
  174. data/ext/qml/ext_accesswrapperfactory.cpp +0 -75
  175. data/ext/qml/ext_accesswrapperfactory.h +0 -39
  176. data/ext/qml/ext_anywrapper.cpp +0 -34
  177. data/ext/qml/ext_anywrapper.h +0 -23
  178. data/ext/qml/ext_kernel.cpp +0 -81
  179. data/ext/qml/ext_kernel.h +0 -9
  180. data/ext/qml/ext_metaobject.cpp +0 -399
  181. data/ext/qml/ext_metaobject.h +0 -60
  182. data/ext/qml/ext_pluginloader.cpp +0 -53
  183. data/ext/qml/ext_pluginloader.h +0 -30
  184. data/ext/qml/ext_pointer.cpp +0 -132
  185. data/ext/qml/ext_pointer.h +0 -41
  186. data/ext/qml/ext_testutil.cpp +0 -40
  187. data/ext/qml/ext_testutil.h +0 -9
  188. data/ext/qml/foreignclass.cpp +0 -72
  189. data/ext/qml/foreignclass.h +0 -88
  190. data/ext/qml/foreignmetaobject.cpp +0 -345
  191. data/ext/qml/foreignmetaobject.h +0 -46
  192. data/ext/qml/foreignobject.cpp +0 -22
  193. data/ext/qml/foreignobject.h +0 -21
  194. data/ext/qml/functioninfo.h +0 -16
  195. data/ext/qml/init.cpp +0 -67
  196. data/ext/qml/kernel.cpp +0 -39
  197. data/ext/qml/kernel.h +0 -32
  198. data/ext/qml/listmodel.cpp +0 -137
  199. data/ext/qml/listmodel.h +0 -45
  200. data/ext/qml/markable.h +0 -12
  201. data/ext/qml/objectdata.cpp +0 -26
  202. data/ext/qml/objectdata.h +0 -20
  203. data/ext/qml/objectgc.cpp +0 -69
  204. data/ext/qml/objectgc.h +0 -28
  205. data/ext/qml/plugins/core/applicationextension.cpp +0 -29
  206. data/ext/qml/plugins/core/applicationextension.h +0 -25
  207. data/ext/qml/plugins/core/componentextension.cpp +0 -41
  208. data/ext/qml/plugins/core/componentextension.h +0 -28
  209. data/ext/qml/plugins/core/contextextension.cpp +0 -39
  210. data/ext/qml/plugins/core/contextextension.h +0 -29
  211. data/ext/qml/plugins/core/core.pro +0 -29
  212. data/ext/qml/plugins/core/coreplugin.cpp +0 -87
  213. data/ext/qml/plugins/core/coreplugin.h +0 -49
  214. data/ext/qml/plugins/core/engineextension.cpp +0 -43
  215. data/ext/qml/plugins/core/engineextension.h +0 -31
  216. data/ext/qml/plugins/core/imageprovider.cpp +0 -38
  217. data/ext/qml/plugins/core/imageprovider.h +0 -18
  218. data/ext/qml/plugins/core/imagerequestpromise.cpp +0 -19
  219. data/ext/qml/plugins/core/imagerequestpromise.h +0 -21
  220. data/ext/qml/plugins/core/qmlexception.cpp +0 -11
  221. data/ext/qml/plugins/core/qmlexception.h +0 -17
  222. data/ext/qml/plugins/testutil/imageprovidertest.cpp +0 -40
  223. data/ext/qml/plugins/testutil/imageprovidertest.h +0 -17
  224. data/ext/qml/plugins/testutil/objectlifechecker.cpp +0 -17
  225. data/ext/qml/plugins/testutil/objectlifechecker.h +0 -24
  226. data/ext/qml/plugins/testutil/ownershiptest.cpp +0 -26
  227. data/ext/qml/plugins/testutil/ownershiptest.h +0 -30
  228. data/ext/qml/plugins/testutil/testobject.cpp +0 -6
  229. data/ext/qml/plugins/testutil/testobject.h +0 -108
  230. data/ext/qml/plugins/testutil/testobjectsubclass.cpp +0 -10
  231. data/ext/qml/plugins/testutil/testobjectsubclass.h +0 -19
  232. data/ext/qml/plugins/testutil/testutil.pro +0 -22
  233. data/ext/qml/plugins/testutil/testutilplugin.cpp +0 -55
  234. data/ext/qml/plugins/testutil/testutilplugin.h +0 -36
  235. data/ext/qml/qmltyperegisterer.cpp +0 -74
  236. data/ext/qml/qmltyperegisterer.h +0 -30
  237. data/ext/qml/rubyclass.cpp +0 -82
  238. data/ext/qml/rubyclass.h +0 -230
  239. data/ext/qml/rubyvalue.cpp +0 -656
  240. data/ext/qml/rubyvalue.h +0 -224
  241. data/ext/qml/signalforwarder.cpp +0 -64
  242. data/ext/qml/signalforwarder.h +0 -29
  243. data/ext/qml/util.cpp +0 -112
  244. data/ext/qml/util.h +0 -82
  245. data/ext/qml/valuereference.cpp +0 -50
  246. data/ext/qml/valuereference.h +0 -22
  247. data/ext/qml/weakvaluereference.cpp +0 -51
  248. data/ext/qml/weakvaluereference.h +0 -21
  249. data/lib/qml/context.rb +0 -71
  250. data/lib/qml/data/error.rb +0 -5
  251. data/lib/qml/dispatchable.rb +0 -34
  252. data/lib/qml/error_converter.rb +0 -16
  253. data/lib/qml/geometry.rb +0 -3
  254. data/lib/qml/geometry/point.rb +0 -5
  255. data/lib/qml/geometry/rectangle.rb +0 -5
  256. data/lib/qml/geometry/size.rb +0 -5
  257. data/lib/qml/image_provider.rb +0 -87
  258. data/lib/qml/init.rb +0 -29
  259. data/lib/qml/meta_object.rb +0 -20
  260. data/lib/qml/models.rb +0 -1
  261. data/lib/qml/qt_classes.rb +0 -9
  262. data/lib/qml/qt_object_base.rb +0 -233
  263. data/lib/qml/reactive/bindable.rb +0 -79
  264. data/lib/qml/reactive/chained_signal.rb +0 -25
  265. data/lib/qml/reactive/error.rb +0 -5
  266. data/lib/qml/reactive/object.rb +0 -293
  267. data/lib/qml/reactive/property.rb +0 -19
  268. data/lib/qml/reactive/signal.rb +0 -115
  269. data/lib/qml/reactive/signal_spy.rb +0 -27
  270. data/lib/qml/reactive/signals/map_signal.rb +0 -21
  271. data/lib/qml/reactive/signals/merge_signal.rb +0 -21
  272. data/lib/qml/reactive/signals/select_signal.rb +0 -21
  273. data/lib/qml/reactive/simple_property.rb +0 -17
  274. data/lib/qml/reactive/unbound_property.rb +0 -42
  275. data/lib/qml/reactive/unbound_signal.rb +0 -51
  276. data/lib/qml/test_util.rb +0 -1
  277. data/lib/qml/test_util/object_life_checker.rb +0 -17
  278. data/lib/qml/wrappable.rb +0 -9
  279. data/spec/qml/context_spec.rb +0 -43
  280. data/spec/qml/conversion_spec.rb +0 -60
  281. data/spec/qml/dispatchable_spec.rb +0 -26
  282. data/spec/qml/dispatcher_spec.rb +0 -71
  283. data/spec/qml/geometry/point_spec.rb +0 -4
  284. data/spec/qml/geometry/rectangle_spec.rb +0 -4
  285. data/spec/qml/geometry/size_spec.rb +0 -4
  286. data/spec/qml/image_provider_spec.rb +0 -33
  287. data/spec/qml/qt_object_base_spec.rb +0 -119
  288. data/spec/qml/reactive/object_spec.rb +0 -249
  289. data/spec/qml/reactive/property_spec.rb +0 -70
  290. data/spec/qml/reactive/signal_spec.rb +0 -191
  291. data/spec/qml/reactive/signal_spy_spec.rb +0 -26
  292. data/spec/qml/reactive/unbound_property_spec.rb +0 -40
  293. data/spec/qml/reactive/unbound_signal_spec.rb +0 -70
  294. data/spec/qml/test_object_spec.rb +0 -186
  295. data/spec/qml/wrappable_spec.rb +0 -10
  296. data/spec/shared/qml/reactive/object.rb +0 -39
@@ -1,28 +0,0 @@
1
- #pragma once
2
- #include <QSet>
3
- #include <QObject>
4
-
5
- namespace RubyQml {
6
-
7
- class ObjectGC : public QObject {
8
- public:
9
-
10
- void addObject(QObject *obj);
11
- void markOwnedObject(QObject *obj);
12
- void markNonOwnedObjects();
13
-
14
- void setDebugMessageEnabled(bool enabled) { mDebugMessageEnabled = enabled; }
15
- bool debugMessageEnabled() { return mDebugMessageEnabled; }
16
- QDebug debug();
17
-
18
- static ObjectGC *instance();
19
-
20
- private:
21
- ObjectGC() {}
22
- void mark(QObject *obj, bool markOwned);
23
-
24
- bool mDebugMessageEnabled = false;
25
- QSet<QObject *> mObjects;
26
- };
27
-
28
- } // namespace RubyQml
@@ -1,29 +0,0 @@
1
- #include "applicationextension.h"
2
- #include <QApplication>
3
- #include <QTimer>
4
- #include <QDebug>
5
-
6
- namespace RubyQml {
7
-
8
- ApplicationExtension::ApplicationExtension(QApplication *app) :
9
- mApp(app)
10
- {
11
- }
12
-
13
- void ApplicationExtension::exec()
14
- {
15
- mApp->exec();
16
- }
17
-
18
- void ApplicationExtension::processEvents()
19
- {
20
- QCoreApplication::processEvents();
21
- forceDeferredDeletes();
22
- }
23
-
24
- void ApplicationExtension::forceDeferredDeletes()
25
- {
26
- QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete);
27
- }
28
-
29
- } // namespace RubyQml
@@ -1,25 +0,0 @@
1
- #pragma once
2
-
3
- #include <QObject>
4
- #include <QGuiApplication>
5
-
6
- class QGuiApplication;
7
-
8
- namespace RubyQml {
9
-
10
- class ApplicationExtension : public QObject
11
- {
12
- Q_OBJECT
13
- public:
14
- explicit ApplicationExtension(QApplication *app);
15
-
16
- public slots:
17
- void exec();
18
- void processEvents();
19
- void forceDeferredDeletes();
20
-
21
- private:
22
- QApplication *mApp;
23
- };
24
-
25
- } // namespace RubyQml
@@ -1,41 +0,0 @@
1
- #include "componentextension.h"
2
- #include "qmlexception.h"
3
- #include <QQmlComponent>
4
- #include <QQmlEngine>
5
- #include <QDebug>
6
-
7
- namespace RubyQml {
8
-
9
- ComponentExtension::ComponentExtension(QQmlComponent *component) :
10
- mComponent(component)
11
- {
12
- }
13
-
14
- void ComponentExtension::loadString(const QString &data, const QString &path)
15
- {
16
- mComponent->setData(data.toUtf8(), QUrl::fromLocalFile(path));
17
- throwIfError();
18
- }
19
-
20
- void ComponentExtension::loadFile(const QString &filePath)
21
- {
22
- mComponent->loadUrl(QUrl::fromLocalFile(filePath));
23
- throwIfError();
24
- }
25
-
26
- QObject *ComponentExtension::create(QQmlContext *context)
27
- {
28
- auto created = mComponent->create(context);
29
- throwIfError();
30
- QQmlEngine::setObjectOwnership(created, QQmlEngine::JavaScriptOwnership);
31
- return created;
32
- }
33
-
34
- void ComponentExtension::throwIfError()
35
- {
36
- if (mComponent->status() == QQmlComponent::Error) {
37
- throw QmlException(mComponent->errorString());
38
- }
39
- }
40
-
41
- } // namespace RubyQml
@@ -1,28 +0,0 @@
1
- #pragma once
2
-
3
- #include <QObject>
4
- #include <QQmlComponent>
5
-
6
- class QQmlComponent;
7
-
8
- namespace RubyQml {
9
-
10
- class ComponentExtension : public QObject
11
- {
12
- Q_OBJECT
13
- public:
14
- explicit ComponentExtension(QQmlComponent *component);
15
-
16
- public slots:
17
-
18
- void loadString(const QString &data, const QString &path);
19
- void loadFile(const QString &filePath);
20
- QObject *create(QQmlContext *context);
21
-
22
- private:
23
- void throwIfError();
24
-
25
- QQmlComponent *mComponent;
26
- };
27
-
28
- } // namespace RubyQml
@@ -1,39 +0,0 @@
1
- #include "contextextension.h"
2
- #include "qmlexception.h"
3
- #include <QQmlContext>
4
- #include <QQmlExpression>
5
-
6
- namespace RubyQml {
7
-
8
- ContextExtension::ContextExtension(QQmlContext *context) :
9
- mContext(context)
10
- {
11
- }
12
-
13
- QQmlEngine *ContextExtension::engine()
14
- {
15
- return mContext->engine();
16
- }
17
-
18
- QVariant ContextExtension::evaluate(QObject *obj, const QString &str)
19
- {
20
- QQmlExpression expression(mContext, obj, str);
21
- auto result = expression.evaluate();
22
- if (expression.hasError()) {
23
- throw QmlException(expression.error().toString());
24
- }
25
- return result;
26
- }
27
-
28
- void ContextExtension::setContextProperty(const QString &key, const QVariant &value)
29
- {
30
- mContext->setContextProperty(key, value);
31
- }
32
-
33
- QVariant ContextExtension::contextProperty(const QString &key)
34
- {
35
- return mContext->contextProperty(key);
36
- }
37
-
38
-
39
- } // namespace RubyQml
@@ -1,29 +0,0 @@
1
- #pragma once
2
-
3
- #include <QObject>
4
- #include <QVariant>
5
-
6
- class QQmlContext;
7
- class QQmlEngine;
8
-
9
- namespace RubyQml {
10
-
11
- class ContextExtension : public QObject
12
- {
13
- Q_OBJECT
14
- Q_PROPERTY(QQmlEngine* engine READ engine)
15
- public:
16
- explicit ContextExtension(QQmlContext *context);
17
- QQmlEngine *engine();
18
-
19
- public slots:
20
-
21
- QVariant evaluate(QObject *obj, const QString &str);
22
- void setContextProperty(const QString &key, const QVariant &value);
23
- QVariant contextProperty(const QString &key);
24
-
25
- private:
26
- QQmlContext *mContext;
27
- };
28
-
29
- } // namespace RubyQml
@@ -1,29 +0,0 @@
1
- #-------------------------------------------------
2
- #
3
- # Project created by QtCreator 2014-05-12T21:03:35
4
- #
5
- #-------------------------------------------------
6
-
7
- QT += core gui qml quick widgets
8
-
9
- TARGET = rubyqml-core
10
- TEMPLATE = lib
11
- CONFIG += plugin c++11
12
-
13
- SOURCES += coreplugin.cpp \
14
- qmlexception.cpp \
15
- applicationextension.cpp \
16
- componentextension.cpp \
17
- contextextension.cpp \
18
- engineextension.cpp \
19
- imageprovider.cpp \
20
- imagerequestpromise.cpp
21
-
22
- HEADERS += coreplugin.h \
23
- qmlexception.h \
24
- applicationextension.h \
25
- componentextension.h \
26
- contextextension.h \
27
- engineextension.h \
28
- imageprovider.h \
29
- imagerequestpromise.h
@@ -1,87 +0,0 @@
1
- #include "coreplugin.h"
2
- #include "applicationextension.h"
3
- #include "engineextension.h"
4
- #include "componentextension.h"
5
- #include "contextextension.h"
6
- #include "imageprovider.h"
7
- #include <QApplication>
8
- #include <QQmlEngine>
9
- #include <QQmlComponent>
10
- #include <QQmlContext>
11
- #include <stdexcept>
12
-
13
- Q_DECLARE_METATYPE(const QMetaObject*)
14
-
15
- namespace RubyQml {
16
-
17
- CorePlugin::CorePlugin(QObject *parent) :
18
- QObject(parent)
19
- {
20
- qRegisterMetaType<ApplicationExtension *>();
21
- qRegisterMetaType<EngineExtension *>();
22
- qRegisterMetaType<ComponentExtension *>();
23
- qRegisterMetaType<ContextExtension *>();
24
- qRegisterMetaType<ImageProvider *>();
25
- qRegisterMetaType<QApplication *>();
26
- qRegisterMetaType<QCoreApplication *>();
27
- qRegisterMetaType<QQmlEngine *>();
28
- qRegisterMetaType<QQmlComponent *>();
29
- qRegisterMetaType<QQmlContext *>();
30
-
31
- const QMetaObject *metaObjects[] = {
32
- &staticQtMetaObject,
33
- &QApplication::staticMetaObject,
34
- &QQmlEngine::staticMetaObject,
35
- &QQmlComponent::staticMetaObject,
36
- &QQmlContext::staticMetaObject};
37
- for (auto metaobj : metaObjects) {
38
- mMetaObjects[metaobj->className()] = QVariant::fromValue(metaobj);
39
- }
40
- }
41
-
42
- QApplication *CorePlugin::applicationInstance()
43
- {
44
- return qApp;
45
- }
46
-
47
- QQmlComponent *CorePlugin::createComponent(QQmlEngine *e)
48
- {
49
- return new QQmlComponent(e);
50
- }
51
-
52
- QQmlContext *CorePlugin::createContext(QQmlEngine *engine)
53
- {
54
- return new QQmlContext(engine);
55
- }
56
-
57
- ApplicationExtension *CorePlugin::createApplicationExtension(QApplication *app)
58
- {
59
- return new ApplicationExtension(app);
60
- }
61
-
62
- EngineExtension *CorePlugin::createEngineExtension(QQmlEngine *engine)
63
- {
64
- return new EngineExtension(engine);
65
- }
66
-
67
- ComponentExtension *CorePlugin::createComponentExtension(QQmlComponent *component)
68
- {
69
- return new ComponentExtension(component);
70
- }
71
-
72
- ContextExtension *CorePlugin::createContextExtension(QQmlContext *context)
73
- {
74
- return new ContextExtension(context);
75
- }
76
-
77
- QQmlContext *CorePlugin::contextForObject(QObject *object)
78
- {
79
- return QQmlEngine::contextForObject(object);
80
- }
81
-
82
- ImageProvider *CorePlugin::createImageProvider(QObject *rubyCallback)
83
- {
84
- return new ImageProvider(rubyCallback);
85
- }
86
-
87
- } // namespace RubyQml
@@ -1,49 +0,0 @@
1
- #pragma once
2
-
3
- #include <QObject>
4
- #include <QVariant>
5
-
6
- class QApplication;
7
- class QQmlEngine;
8
- class QQmlComponent;
9
- class QQmlContext;
10
-
11
- namespace RubyQml {
12
-
13
- class ApplicationExtension;
14
- class ComponentExtension;
15
- class EngineExtension;
16
- class ContextExtension;
17
- class ImageProvider;
18
-
19
- class CorePlugin : public QObject
20
- {
21
- Q_OBJECT
22
- Q_PLUGIN_METADATA(IID "org.ruby-qml.RubyQml.Core")
23
-
24
- public:
25
- CorePlugin(QObject *parent = 0);
26
-
27
- public slots:
28
- QVariantHash metaObjects() { return mMetaObjects; }
29
-
30
- QApplication *applicationInstance();
31
-
32
- QQmlComponent *createComponent(QQmlEngine *engine);
33
- QQmlContext *createContext(QQmlEngine *engine);
34
-
35
- RubyQml::ApplicationExtension *createApplicationExtension(QApplication *app);
36
- RubyQml::EngineExtension *createEngineExtension(QQmlEngine *engine);
37
- RubyQml::ComponentExtension *createComponentExtension(QQmlComponent *component);
38
- RubyQml::ContextExtension *createContextExtension(QQmlContext *context);
39
-
40
- QQmlContext *contextForObject(QObject *object);
41
-
42
- RubyQml::ImageProvider *createImageProvider(QObject *rubyCallback);
43
-
44
- private:
45
- QVariantHash mMetaObjects;
46
- };
47
-
48
-
49
- } // namespace RubyQml
@@ -1,43 +0,0 @@
1
- #include "engineextension.h"
2
- #include "imageprovider.h"
3
- #include <QQmlEngine>
4
- #include <QStringList>
5
-
6
- namespace RubyQml {
7
-
8
- EngineExtension::EngineExtension(QQmlEngine *engine) :
9
- mEngine(engine)
10
- {
11
- }
12
-
13
- QQmlContext *EngineExtension::rootContext()
14
- {
15
- return mEngine->rootContext();
16
- }
17
-
18
- void EngineExtension::addImageProvider(const QString &id, ImageProvider *provider)
19
- {
20
- mEngine->addImageProvider(id, provider);
21
- }
22
-
23
- void EngineExtension::addImportPath(const QString &path)
24
- {
25
- mEngine->addImportPath(path);
26
- }
27
-
28
- QVariantList EngineExtension::importPaths() const
29
- {
30
- QStringList pathList = mEngine->importPathList();
31
- QVariantList varList;
32
- for(auto path : pathList){
33
- varList << path;
34
- }
35
- return varList;
36
- }
37
-
38
- void EngineExtension::collectGarbage()
39
- {
40
- mEngine->collectGarbage();
41
- }
42
-
43
- } // namespace RubyQml
@@ -1,31 +0,0 @@
1
- #pragma once
2
-
3
- #include <QObject>
4
- #include <QVariantList>
5
-
6
- class QQmlEngine;
7
- class QQmlContext;
8
-
9
- namespace RubyQml {
10
-
11
- class ImageProvider;
12
-
13
- class EngineExtension : public QObject
14
- {
15
- Q_OBJECT
16
- Q_PROPERTY(QQmlContext* rootContext READ rootContext)
17
- public:
18
- explicit EngineExtension(QQmlEngine *engine);
19
- QQmlContext *rootContext();
20
-
21
- public slots:
22
- void addImageProvider(const QString &id, RubyQml::ImageProvider *provider);
23
- void addImportPath(const QString &path);
24
- QVariantList importPaths() const;
25
- void collectGarbage();
26
-
27
- private:
28
- QQmlEngine *mEngine;
29
- };
30
-
31
- } // namespace RubyQml