qml 0.0.4 → 0.0.5
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.
- checksums.yaml +4 -4
- data/README.md +46 -25
- data/changes.md +4 -0
- data/examples/fizzbuzz/main.qml +0 -1
- data/ext/qml/extconf.rb +22 -2
- data/ext/qml/plugins/testutil/imageprovidertest.cpp +40 -0
- data/ext/qml/plugins/testutil/imageprovidertest.h +17 -0
- data/ext/qml/plugins/testutil/testutil.pro +5 -3
- data/ext/qml/plugins/testutil/testutilplugin.cpp +8 -0
- data/ext/qml/plugins/testutil/testutilplugin.h +4 -0
- data/lib/qml/version.rb +1 -1
- data/qml.gemspec +1 -1
- data/spec/assets/test.png +0 -0
- data/spec/qml/application_spec.rb +26 -3
- data/spec/qml/component_spec.rb +8 -0
- data/spec/qml/engine_spec.rb +17 -0
- data/spec/qml/image_provider_spec.rb +33 -0
- data/spec/qml/wrappable_spec.rb +10 -0
- metadata +13 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 281f3641f4c5a3441c260dd874168fe99e6ce991
|
4
|
+
data.tar.gz: 46b5c43d00a8a73d1553b327910581fe4569d147
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 77c9acdfec3b5689b21425bcdfe4a5a11c2b27e615388faf520dc5c134cde441cfa1700b14f231d59a1a56d3dcc84f8c809b5400d1a4dbc6d5ffc3e8a52ab22b
|
7
|
+
data.tar.gz: 83496cea61eb036a083457ee84d7be63b7b7b46d4c8968384eff708ad062b2cc1c5171716bec20c4ec9378a6e93f0d450491bd26835fe9e40ab0d04db94c0663
|
data/README.md
CHANGED
@@ -1,25 +1,23 @@
|
|
1
|
-
ruby-qml
|
1
|
+
ruby-qml [](http://badge.fury.io/rb/qml)
|
2
2
|
================
|
3
3
|
|
4
|
-
|
4
|
+
ruby-qml is a QML / Qt Quick wrapper for Ruby.
|
5
|
+
It provides bindings between QML and Ruby and enables you to use Qt Quick-based GUI from Ruby.
|
6
|
+
|
7
|
+
* [Documentation](http://rubydoc.info/github/seanchas116/ruby-qml/master/frames)
|
8
|
+
* [Examples](https://github.com/seanchas116/ruby-qml/tree/master/examples)
|
9
|
+
* [Changelog](https://github.com/seanchas116/ruby-qml/blob/master/changes.md)
|
10
|
+
|
5
11
|
[](https://gemnasium.com/seanchas116/ruby-qml)
|
6
12
|
[](https://travis-ci.org/seanchas116/ruby-qml)
|
7
13
|
[](https://coveralls.io/r/seanchas116/ruby-qml?branch=master)
|
8
14
|
[](http://inch-ci.org/github/seanchas116/ruby-qml)
|
9
15
|
|
10
|
-
ruby-qml is a QML / Qt Quick wrapper for Ruby.
|
11
|
-
It provides bindings between QML and Ruby and enables you to use Qt Quick-based GUI from Ruby.
|
12
|
-
|
13
16
|
## What you can do with ruby-qml
|
14
17
|
|
15
18
|
* Develop desktop GUI applications only with Ruby and QML
|
16
19
|
* Easily combine codes written in C++ and Qt with your Ruby code
|
17
20
|
|
18
|
-
## Documentation and Examples
|
19
|
-
|
20
|
-
* [Documentation](http://rubydoc.info/github/seanchas116/ruby-qml/master/frames)
|
21
|
-
* [Examples](https://github.com/seanchas116/ruby-qml/tree/master/examples)
|
22
|
-
|
23
21
|
## Gallery
|
24
22
|
|
25
23
|
[](https://github.com/seanchas116/ruby-qml/tree/master/examples/todo_sequel)
|
@@ -28,29 +26,41 @@ It provides bindings between QML and Ruby and enables you to use Qt Quick-based
|
|
28
26
|
|
29
27
|
## Installation
|
30
28
|
|
31
|
-
|
29
|
+
### Requirements
|
30
|
+
|
31
|
+
* **Ruby 1.9 or later**
|
32
|
+
* **OS X or Linux**
|
33
|
+
* pkg-config
|
34
|
+
* libffi
|
35
|
+
* Qt 5.2 or later
|
32
36
|
|
33
37
|
### OS X with Homebrew
|
34
38
|
|
35
|
-
|
39
|
+
To install ruby-qml on OS X with Homebrew, run the following commands:
|
36
40
|
|
37
|
-
$ brew install pkg-config
|
38
|
-
$ brew install libffi
|
39
|
-
$ brew install qt5
|
41
|
+
$ brew install pkg-config libffi qt5
|
40
42
|
$ gem install qml -- --with-libffi-dir=$(brew --prefix libffi) --with-qt-dir=$(brew --prefix qt5)
|
41
43
|
|
42
|
-
|
44
|
+
Both libffi and Qt5 are keg-only in Homebrew, so you must specify their paths explicitly (or force linking).
|
43
45
|
|
44
|
-
|
46
|
+
If you use [official Qt installation](http://qt-project.org/downloads), for example:
|
45
47
|
|
46
|
-
|
47
|
-
|
48
|
-
* Qt 5.2 or later
|
48
|
+
$ brew install pkg-config libffi
|
49
|
+
$ gem install qml -- --with-libffi-dir=$(brew --prefix libffi) --with-qt-dir=~/Qt/5.3/clang_64
|
49
50
|
|
50
|
-
|
51
|
+
The Qt installation path (`~/Qt/5.3/clang_64` in this example) depends on your Qt installation configuration and Qt version.
|
52
|
+
|
53
|
+
### General (OSX and Linux)
|
51
54
|
|
52
55
|
$ gem install qml
|
53
56
|
|
57
|
+
#### Options
|
58
|
+
|
59
|
+
* `--with-libffi-dir=[dir]`
|
60
|
+
* libffi installation directory (optional).
|
61
|
+
* `--with-qt-dir=[dir]`
|
62
|
+
* Qt installation directory (optional).
|
63
|
+
|
54
64
|
### Use Gemfile
|
55
65
|
|
56
66
|
Add this line to your Gemfile:
|
@@ -75,6 +85,8 @@ The configuration will be saved in `~/.bundle/config`.
|
|
75
85
|
The following code loads a QML file and shows an application window titled "Hello, world!".
|
76
86
|
|
77
87
|
```ruby
|
88
|
+
require 'qml'
|
89
|
+
|
78
90
|
QML.application do |app|
|
79
91
|
app.load_path Pathname(__FILE__) + '../main.qml'
|
80
92
|
end
|
@@ -158,7 +170,6 @@ ApplicationWindow {
|
|
158
170
|
id: textField
|
159
171
|
}
|
160
172
|
Text {
|
161
|
-
y: 100
|
162
173
|
id: text
|
163
174
|
text: fizzBuzz.result
|
164
175
|
}
|
@@ -373,9 +384,14 @@ class MyPlugin : public QObject
|
|
373
384
|
{
|
374
385
|
Q_OBJECT
|
375
386
|
Q_PLUGIN_METADATA(IID "org.myplugin.MyPlugin")
|
387
|
+
signals:
|
388
|
+
void added(int value);
|
389
|
+
|
376
390
|
public slots:
|
377
|
-
|
378
|
-
|
391
|
+
int add(int x, int y) {
|
392
|
+
int result = x + y;
|
393
|
+
emit added(result);
|
394
|
+
return result;
|
379
395
|
}
|
380
396
|
};
|
381
397
|
```
|
@@ -383,7 +399,12 @@ public slots:
|
|
383
399
|
```ruby
|
384
400
|
# Ruby
|
385
401
|
plugin = QML::PluginLoader.new(directory, "myplugin").instance
|
386
|
-
|
402
|
+
|
403
|
+
plugin.added.connect do |value|
|
404
|
+
puts "added value: #{value}"
|
405
|
+
end
|
406
|
+
|
407
|
+
plugin.add(1, 2) #=> 3
|
387
408
|
```
|
388
409
|
|
389
410
|
### Garbage collection
|
data/changes.md
CHANGED
data/examples/fizzbuzz/main.qml
CHANGED
data/ext/qml/extconf.rb
CHANGED
@@ -39,7 +39,9 @@ class Configurator
|
|
39
39
|
qmake_opts = @debug_enabled ? 'CONFIG+=debug' : ''
|
40
40
|
Pathname(__FILE__).+("../plugins").children.select(&:directory?).each do |dir|
|
41
41
|
Dir.chdir(dir) do
|
42
|
-
system("#{@qmake} #{qmake_opts}")
|
42
|
+
system("#{@qmake} #{qmake_opts}") or abort "failed to configurate plugin: #{dir.basename}"
|
43
|
+
system('make clean') if enable_config('clean-plugin', false)
|
44
|
+
system('make') or abort "failed to build plugin: #{dir.basename}"
|
43
45
|
end
|
44
46
|
end
|
45
47
|
end
|
@@ -49,15 +51,33 @@ class Configurator
|
|
49
51
|
|
50
52
|
PKGS.each do |mod|
|
51
53
|
@cppflags << `#{@pkgconfig} --cflags #{mod}`.chomp
|
52
|
-
|
54
|
+
|
55
|
+
libs =`#{@pkgconfig} --libs #{mod}`.chomp
|
56
|
+
@ldflags << libs
|
57
|
+
|
58
|
+
# add framework search path to cppflags
|
59
|
+
libs.split.each do |lib|
|
60
|
+
@cppflags << lib if /^-F/ =~ lib
|
61
|
+
end
|
53
62
|
end
|
54
63
|
|
64
|
+
# add private header directory of QtCore
|
55
65
|
qtversion = `#{@pkgconfig} --modversion Qt5Core`.chomp
|
56
66
|
`#{@pkgconfig} --cflags-only-I Qt5Core`.split.map { |i| Pathname(i.gsub("-I", "")) }.each do |dir|
|
57
67
|
private_dir = dir + "#{qtversion}/QtCore"
|
58
68
|
@cppflags << "-I#{private_dir}" if private_dir.exist?
|
59
69
|
end
|
60
70
|
|
71
|
+
# include framework headers in Mac
|
72
|
+
# (Qt official installer for Mac does not install header files in /include directory)
|
73
|
+
if /darwin/ =~ RUBY_PLATFORM
|
74
|
+
PKGS.map { |pkg| pkg.gsub(/^Qt5/, 'Qt') }.each do |framework|
|
75
|
+
@cppflags << "-I#{@qt_path + "lib/#{framework}.framework/Headers"}"
|
76
|
+
end
|
77
|
+
# add private header directory of QtCore
|
78
|
+
@cppflags << "-I#{@qt_path}/lib/QtCore.framework/Headers/#{qtversion}/QtCore"
|
79
|
+
end
|
80
|
+
|
61
81
|
$CPPFLAGS += " #{@cppflags.join(" ")}"
|
62
82
|
$LDFLAGS += " #{@ldflags.join(" ")}"
|
63
83
|
$CPPFLAGS += " -fPIC"
|
@@ -0,0 +1,40 @@
|
|
1
|
+
#include "imageprovidertest.h"
|
2
|
+
#include <QQuickImageProvider>
|
3
|
+
#include <QCoreApplication>
|
4
|
+
#include <future>
|
5
|
+
#include <atomic>
|
6
|
+
|
7
|
+
namespace RubyQml {
|
8
|
+
|
9
|
+
ImageProviderTest::ImageProviderTest(QObject *parent) :
|
10
|
+
QObject(parent)
|
11
|
+
{
|
12
|
+
}
|
13
|
+
|
14
|
+
bool ImageProviderTest::requestAndCompare(QObject *imageProvider, const QString &id, const QByteArray &imageData)
|
15
|
+
{
|
16
|
+
auto provider = dynamic_cast<QQuickImageProvider *>(imageProvider);
|
17
|
+
if (!provider) {
|
18
|
+
throw std::runtime_error("invalid iamge provider");
|
19
|
+
}
|
20
|
+
std::atomic_bool finished(false);
|
21
|
+
auto result = std::async(std::launch::async, [=, &finished] {
|
22
|
+
QSize size;
|
23
|
+
auto result = provider->requestImage(id, &size, QSize());
|
24
|
+
finished = true;
|
25
|
+
return result;
|
26
|
+
});
|
27
|
+
auto start = std::chrono::steady_clock::now();
|
28
|
+
while (!finished) {
|
29
|
+
QCoreApplication::processEvents();
|
30
|
+
auto current = std::chrono::steady_clock::now();
|
31
|
+
if (current - start > std::chrono::seconds(1)) {
|
32
|
+
throw std::runtime_error("image request timeout");
|
33
|
+
}
|
34
|
+
}
|
35
|
+
auto actual = result.get();
|
36
|
+
auto expected = QImage::fromData(imageData);
|
37
|
+
return actual == expected;
|
38
|
+
}
|
39
|
+
|
40
|
+
}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#include <QObject>
|
4
|
+
|
5
|
+
namespace RubyQml {
|
6
|
+
|
7
|
+
class ImageProviderTest : public QObject
|
8
|
+
{
|
9
|
+
Q_OBJECT
|
10
|
+
public:
|
11
|
+
explicit ImageProviderTest(QObject *parent = 0);
|
12
|
+
|
13
|
+
public slots:
|
14
|
+
bool requestAndCompare(QObject *imageProvider, const QString &id, const QByteArray &imageData);
|
15
|
+
};
|
16
|
+
|
17
|
+
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
TEMPLATE = lib
|
2
2
|
CONFIG += plugin c++11
|
3
|
-
QT += qml
|
3
|
+
QT += qml quick
|
4
4
|
|
5
5
|
TARGET = rubyqml-testutil
|
6
6
|
INCLUDEPATH += .
|
@@ -10,11 +10,13 @@ SOURCES += testobject.cpp \
|
|
10
10
|
testobjectsubclass.cpp \
|
11
11
|
ownershiptest.cpp \
|
12
12
|
testutilplugin.cpp \
|
13
|
-
objectlifechecker.cpp
|
13
|
+
objectlifechecker.cpp \
|
14
|
+
imageprovidertest.cpp
|
14
15
|
|
15
16
|
HEADERS += \
|
16
17
|
testobject.h \
|
17
18
|
testobjectsubclass.h \
|
18
19
|
ownershiptest.h \
|
19
20
|
testutilplugin.h \
|
20
|
-
objectlifechecker.h
|
21
|
+
objectlifechecker.h \
|
22
|
+
imageprovidertest.h
|
@@ -3,7 +3,9 @@
|
|
3
3
|
#include "testobjectsubclass.h"
|
4
4
|
#include "ownershiptest.h"
|
5
5
|
#include "objectlifechecker.h"
|
6
|
+
#include "imageprovidertest.h"
|
6
7
|
#include <QtQml>
|
8
|
+
#include <QQuickWindow>
|
7
9
|
|
8
10
|
Q_DECLARE_METATYPE(const QMetaObject*)
|
9
11
|
|
@@ -17,6 +19,7 @@ TestUtilPlugin::TestUtilPlugin(QObject *parent) :
|
|
17
19
|
qRegisterMetaType<TestObjectSubclass *>();
|
18
20
|
qRegisterMetaType<OwnershipTest *>();
|
19
21
|
qRegisterMetaType<ObjectLifeChecker *>();
|
22
|
+
qRegisterMetaType<ImageProviderTest *>();
|
20
23
|
|
21
24
|
auto metaObjects = { &TestObject::staticMetaObject, &ObjectLifeChecker::staticMetaObject};
|
22
25
|
for (auto metaobj : metaObjects) {
|
@@ -44,4 +47,9 @@ ObjectLifeChecker *TestUtilPlugin::createObjectLifeChecker(QObject *target)
|
|
44
47
|
return new ObjectLifeChecker(target);
|
45
48
|
}
|
46
49
|
|
50
|
+
ImageProviderTest *TestUtilPlugin::createImageProviderTest()
|
51
|
+
{
|
52
|
+
return new ImageProviderTest();
|
53
|
+
}
|
54
|
+
|
47
55
|
} // namespace RubyQml
|
@@ -2,12 +2,15 @@
|
|
2
2
|
#include <QObject>
|
3
3
|
#include <QVariant>
|
4
4
|
|
5
|
+
class QQuickWindow;
|
6
|
+
|
5
7
|
namespace RubyQml {
|
6
8
|
|
7
9
|
class TestObject;
|
8
10
|
class TestObjectSubclass;
|
9
11
|
class OwnershipTest;
|
10
12
|
class ObjectLifeChecker;
|
13
|
+
class ImageProviderTest;
|
11
14
|
|
12
15
|
class TestUtilPlugin : public QObject
|
13
16
|
{
|
@@ -24,6 +27,7 @@ public slots:
|
|
24
27
|
RubyQml::TestObjectSubclass *createTestObjectSubclass();
|
25
28
|
RubyQml::OwnershipTest *createOwnershipTest();
|
26
29
|
RubyQml::ObjectLifeChecker *createObjectLifeChecker(QObject *target);
|
30
|
+
RubyQml::ImageProviderTest *createImageProviderTest();
|
27
31
|
|
28
32
|
private:
|
29
33
|
QVariantHash mMetaObjects;
|
data/lib/qml/version.rb
CHANGED
data/qml.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ["iofg2100@gmail.com"]
|
11
11
|
spec.summary = %q{A QML / Qt Quick wrapper for Ruby}
|
12
12
|
spec.description = "ruby-qml provides bindings between QML and Ruby and enables you to use Qt Quick-based GUI from Ruby."
|
13
|
-
spec.homepage = "
|
13
|
+
spec.homepage = "http://seanchas116.github.io/ruby-qml/"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0")
|
Binary file
|
@@ -2,9 +2,24 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe QML::Application do
|
4
4
|
let(:application) { QML.application }
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
|
6
|
+
describe '.new' do
|
7
|
+
it 'fails with QML::ApplicationError' do
|
8
|
+
expect { QML::Application.new }.to raise_error(QML::ApplicationError)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
describe '.notify_error' do
|
12
|
+
let(:error) do
|
13
|
+
begin
|
14
|
+
fail "hoge"
|
15
|
+
rescue => e
|
16
|
+
e
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'prints an error to stderr' do
|
21
|
+
expect { QML::Application.notify_error(error) }
|
22
|
+
.to output(/#{error.message}/).to_stderr
|
8
23
|
end
|
9
24
|
end
|
10
25
|
describe '#engine' do
|
@@ -41,3 +56,11 @@ describe QML::Application do
|
|
41
56
|
end
|
42
57
|
end
|
43
58
|
end
|
59
|
+
|
60
|
+
describe QML do
|
61
|
+
describe '.application' do
|
62
|
+
it 'returns the QML::Application instance' do
|
63
|
+
expect(QML.application).to be_a(QML::Application)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
data/spec/qml/component_spec.rb
CHANGED
@@ -41,4 +41,12 @@ describe QML::Component do
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
end
|
44
|
+
|
45
|
+
describe '#initialize' do
|
46
|
+
context 'when neither string nor path specified' do
|
47
|
+
it 'fails with QMLError' do
|
48
|
+
expect { QML::Component.new({}) }.to raise_error(QML::QMLError)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
44
52
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe QML::Engine do
|
4
|
+
describe '.new' do
|
5
|
+
it 'fails with QML::EngineError' do
|
6
|
+
expect { QML::Engine.new }.to raise_error(QML::EngineError)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe QML do
|
12
|
+
describe '.engine' do
|
13
|
+
it 'returns the instance of QML::Engine' do
|
14
|
+
expect(QML.engine).to be_a(QML::Engine)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe QML::ImageProvider do
|
4
|
+
|
5
|
+
describe '#request' do
|
6
|
+
it 'is not implemented by default' do
|
7
|
+
expect { QML::ImageProvider.new.request(nil) }.to raise_error(NotImplementedError)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
context 'with test image' do
|
12
|
+
let(:klass) do
|
13
|
+
Class.new QML::ImageProvider do
|
14
|
+
attr_reader :image
|
15
|
+
|
16
|
+
def initialize
|
17
|
+
@image = (Pathname(__FILE__) + '../../assets/test.png').binread
|
18
|
+
super
|
19
|
+
end
|
20
|
+
|
21
|
+
def request(req)
|
22
|
+
req.finish(image)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
let(:image_provider) { klass.new }
|
27
|
+
|
28
|
+
it 'provides image to QML' do
|
29
|
+
test = QML::Plugins.test_util.create_image_provider_test
|
30
|
+
expect(test.request_and_compare(image_provider.qt_image_provider, 'test', image_provider.image)).to eq true
|
31
|
+
end
|
32
|
+
end
|
33
|
+
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.
|
4
|
+
version: 0.0.5
|
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-
|
11
|
+
date: 2014-07-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -209,6 +209,8 @@ files:
|
|
209
209
|
- ext/qml/plugins/core/imagerequestpromise.h
|
210
210
|
- ext/qml/plugins/core/qmlexception.cpp
|
211
211
|
- ext/qml/plugins/core/qmlexception.h
|
212
|
+
- ext/qml/plugins/testutil/imageprovidertest.cpp
|
213
|
+
- ext/qml/plugins/testutil/imageprovidertest.h
|
212
214
|
- ext/qml/plugins/testutil/objectlifechecker.cpp
|
213
215
|
- ext/qml/plugins/testutil/objectlifechecker.h
|
214
216
|
- ext/qml/plugins/testutil/ownershiptest.cpp
|
@@ -286,6 +288,7 @@ files:
|
|
286
288
|
- lib/qml/version.rb
|
287
289
|
- lib/qml/wrappable.rb
|
288
290
|
- qml.gemspec
|
291
|
+
- spec/assets/test.png
|
289
292
|
- spec/assets/testobj.qml
|
290
293
|
- spec/qml/access_spec.rb
|
291
294
|
- spec/qml/application_spec.rb
|
@@ -297,9 +300,11 @@ files:
|
|
297
300
|
- spec/qml/data/query_model_spec.rb
|
298
301
|
- spec/qml/dispatchable_spec.rb
|
299
302
|
- spec/qml/dispatcher_spec.rb
|
303
|
+
- spec/qml/engine_spec.rb
|
300
304
|
- spec/qml/geometry/point_spec.rb
|
301
305
|
- spec/qml/geometry/rectangle_spec.rb
|
302
306
|
- spec/qml/geometry/size_spec.rb
|
307
|
+
- spec/qml/image_provider_spec.rb
|
303
308
|
- spec/qml/plugin_loader_spec.rb
|
304
309
|
- spec/qml/qt_object_base_spec.rb
|
305
310
|
- spec/qml/reactive/object_spec.rb
|
@@ -307,10 +312,11 @@ files:
|
|
307
312
|
- spec/qml/reactive/signal_spec.rb
|
308
313
|
- spec/qml/reactive/signal_spy_spec.rb
|
309
314
|
- spec/qml/test_object_spec.rb
|
315
|
+
- spec/qml/wrappable_spec.rb
|
310
316
|
- spec/qml_spec.rb
|
311
317
|
- spec/shared_examples/qml/data/list_model.rb
|
312
318
|
- spec/spec_helper.rb
|
313
|
-
homepage:
|
319
|
+
homepage: http://seanchas116.github.io/ruby-qml/
|
314
320
|
licenses:
|
315
321
|
- MIT
|
316
322
|
metadata: {}
|
@@ -335,6 +341,7 @@ signing_key:
|
|
335
341
|
specification_version: 4
|
336
342
|
summary: A QML / Qt Quick wrapper for Ruby
|
337
343
|
test_files:
|
344
|
+
- spec/assets/test.png
|
338
345
|
- spec/assets/testobj.qml
|
339
346
|
- spec/qml/access_spec.rb
|
340
347
|
- spec/qml/application_spec.rb
|
@@ -346,9 +353,11 @@ test_files:
|
|
346
353
|
- spec/qml/data/query_model_spec.rb
|
347
354
|
- spec/qml/dispatchable_spec.rb
|
348
355
|
- spec/qml/dispatcher_spec.rb
|
356
|
+
- spec/qml/engine_spec.rb
|
349
357
|
- spec/qml/geometry/point_spec.rb
|
350
358
|
- spec/qml/geometry/rectangle_spec.rb
|
351
359
|
- spec/qml/geometry/size_spec.rb
|
360
|
+
- spec/qml/image_provider_spec.rb
|
352
361
|
- spec/qml/plugin_loader_spec.rb
|
353
362
|
- spec/qml/qt_object_base_spec.rb
|
354
363
|
- spec/qml/reactive/object_spec.rb
|
@@ -356,6 +365,7 @@ test_files:
|
|
356
365
|
- spec/qml/reactive/signal_spec.rb
|
357
366
|
- spec/qml/reactive/signal_spy_spec.rb
|
358
367
|
- spec/qml/test_object_spec.rb
|
368
|
+
- spec/qml/wrappable_spec.rb
|
359
369
|
- spec/qml_spec.rb
|
360
370
|
- spec/shared_examples/qml/data/list_model.rb
|
361
371
|
- spec/spec_helper.rb
|