qtbindings 4.8.3.0 → 4.8.5.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.
- checksums.yaml +7 -0
- data/Rakefile +1 -2
- data/bin/rbrcc +5 -5
- data/bin/rbuic4 +5 -5
- data/bin/smokeapi +5 -5
- data/bin/smokedeptool +5 -5
- data/{CHANGELOG.txt → changelog.txt} +15 -0
- data/examples/desktop/screenshot/screenshot.rb +10 -9
- data/ext/cmake/modules/FindRuby.cmake +1 -1
- data/ext/ruby/qtruby/src/handlers.cpp +186 -176
- data/ext/ruby/qtruby/src/{Qt.cpp → qt.cpp} +135 -114
- data/ext/ruby/qtruby/src/qtruby.cpp +4 -1
- data/extconf.rb +20 -12
- data/{KNOWN_ISSUES.txt → known_issues.txt} +0 -2
- data/lib/Qt/qtruby4.rb +261 -237
- data/lib/qt4.rb +101 -0
- data/lib/qtbindings_version.rb +2 -2
- data/qtbindings.gemspec +1 -1
- data/qtbindingsnative.gemspec +1 -1
- data/{README.txt → readme.txt} +127 -119
- data/{TODO.txt → todo.txt} +0 -1
- metadata +13 -14
- data/lib/Qt4.rb +0 -20
data/lib/qt4.rb
ADDED
@@ -0,0 +1,101 @@
|
|
1
|
+
windows = false
|
2
|
+
platform = RUBY_PLATFORM.split("-")[1]
|
3
|
+
windows = true if platform =~ /mswin32/ or platform =~ /mingw32/
|
4
|
+
|
5
|
+
module Qt
|
6
|
+
PLUGIN_PATH = File.expand_path(File.join(File.dirname(__FILE__), '..', 'bin', 'plugins'))
|
7
|
+
end
|
8
|
+
if RUBY_VERSION.split('.')[0].to_i == 1
|
9
|
+
if windows
|
10
|
+
ENV['PATH'] = File.join(File.dirname(__FILE__), '../bin') + ';' + File.join(File.dirname(__FILE__), '../lib/1.9') + ';' + File.join(File.dirname(__FILE__), '../bin/plugins') + ';' + File.join(File.dirname(__FILE__), '../bin/1.9') + ';' + ENV['PATH']
|
11
|
+
end
|
12
|
+
$: << File.join(File.dirname(__FILE__), '../lib/1.9')
|
13
|
+
require '1.9/qtruby4'
|
14
|
+
else
|
15
|
+
if windows
|
16
|
+
ENV['PATH'] = File.join(File.dirname(__FILE__), '../bin') + ';' + File.join(File.dirname(__FILE__), '../lib/2.0') + ';' + File.join(File.dirname(__FILE__), '../bin/plugins') + ';' + File.join(File.dirname(__FILE__), '../bin/2.0') + ';' + ENV['PATH']
|
17
|
+
end
|
18
|
+
$: << File.join(File.dirname(__FILE__), '../lib/2.0')
|
19
|
+
require '2.0/qtruby4'
|
20
|
+
end
|
21
|
+
|
22
|
+
module Qt
|
23
|
+
class RubyThreadFix < Qt::Object
|
24
|
+
slots 'ruby_thread_timeout()'
|
25
|
+
slots 'callback_timeout()'
|
26
|
+
slots 'callback_timeout2()'
|
27
|
+
@@queue = Queue.new
|
28
|
+
|
29
|
+
def initialize
|
30
|
+
super()
|
31
|
+
# Enable threading
|
32
|
+
@ruby_thread_sleep_period = 0.01
|
33
|
+
@ruby_thread_timer = Qt::Timer.new(self)
|
34
|
+
connect(@ruby_thread_timer, SIGNAL('timeout()'), SLOT('ruby_thread_timeout()'))
|
35
|
+
@ruby_thread_timer.start(0)
|
36
|
+
@callback_timer = Qt::Timer.new(self)
|
37
|
+
connect(@callback_timer, SIGNAL('timeout()'), SLOT('callback_timeout()'))
|
38
|
+
@callback_timer.start(1)
|
39
|
+
@callback_timer2 = Qt::Timer.new(self)
|
40
|
+
connect(@callback_timer2, SIGNAL('timeout()'), SLOT('callback_timeout2()'))
|
41
|
+
@running = true
|
42
|
+
end
|
43
|
+
|
44
|
+
def ruby_thread_timeout
|
45
|
+
sleep(@ruby_thread_sleep_period)
|
46
|
+
end
|
47
|
+
|
48
|
+
def callback_timeout
|
49
|
+
if !@@queue.empty?
|
50
|
+
# Start a backup timer in case this one goes modal.
|
51
|
+
@callback_timer2.start(100)
|
52
|
+
@@queue.pop.call until @@queue.empty?
|
53
|
+
# Cancel the backup timer
|
54
|
+
@callback_timer2.stop if @callback_timer2
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def callback_timeout2
|
59
|
+
@callback_timer2.interval = 10
|
60
|
+
@@queue.pop.call until @@queue.empty?
|
61
|
+
end
|
62
|
+
|
63
|
+
def self.queue
|
64
|
+
@@queue
|
65
|
+
end
|
66
|
+
|
67
|
+
def stop
|
68
|
+
if @running
|
69
|
+
@running = false
|
70
|
+
@ruby_thread_timer.stop
|
71
|
+
@callback_timer.stop
|
72
|
+
@callback_timer2.stop
|
73
|
+
@ruby_thread_timer.dispose
|
74
|
+
@callback_timer.dispose
|
75
|
+
@callback_timer2.dispose
|
76
|
+
@ruby_thread_timer = nil
|
77
|
+
@callback_timer = nil
|
78
|
+
@callback_timer2 = nil
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def self.execute_in_main_thread (blocking = false, sleep_period = 0.001, delay_execution = false)
|
84
|
+
if Thread.current != Thread.main
|
85
|
+
complete = false
|
86
|
+
RubyThreadFix.queue << lambda {|| yield; complete = true}
|
87
|
+
if blocking
|
88
|
+
until complete
|
89
|
+
sleep(sleep_period)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
else
|
93
|
+
if delay_execution
|
94
|
+
RubyThreadFix.queue << lambda {|| yield; complete = true}
|
95
|
+
else
|
96
|
+
yield
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
end # module Qt
|
data/lib/qtbindings_version.rb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
QTBINDINGS_VERSION = '4.8.
|
2
|
-
QTBINDINGS_RELEASE_DATE = '
|
1
|
+
QTBINDINGS_VERSION = '4.8.5.0'
|
2
|
+
QTBINDINGS_RELEASE_DATE = '2013-12-03 16:46:31 -0700'
|
data/qtbindings.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require './lib/qtbindings_version'
|
2
2
|
|
3
3
|
spec = Gem::Specification.new do |s|
|
4
|
-
s.authors = ['
|
4
|
+
s.authors = ['Ryan Melton', 'Jason Thomas', 'Richard Dale', 'Arno Rehn']
|
5
5
|
s.email = 'kde-bindings@kde.org'
|
6
6
|
s.rubyforge_project = 'qtbindings'
|
7
7
|
s.summary = "Qt bindings for ruby"
|
data/qtbindingsnative.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require './lib/qtbindings_version'
|
2
2
|
|
3
3
|
spec = Gem::Specification.new do |s|
|
4
|
-
s.authors = ['
|
4
|
+
s.authors = ['Ryan Melton', 'Jason Thomas', 'Richard Dale', 'Arno Rehn']
|
5
5
|
s.email = 'kde-bindings@kde.org'
|
6
6
|
s.rubyforge_project = 'qtbindings'
|
7
7
|
s.platform = Gem::Platform::CURRENT
|
data/{README.txt → readme.txt}
RENAMED
@@ -1,119 +1,127 @@
|
|
1
|
-
qtbindings
|
2
|
-
----------
|
3
|
-
This project provides bindings that allow the QT Gui toolkit to be used from the
|
4
|
-
Ruby Programming language. Overall it is a repackaging of a subset of the KDE
|
5
|
-
bindings ruby and smoke systems into a format that lends itself well to
|
6
|
-
packaging into a Ruby gem.
|
7
|
-
|
8
|
-
Goals
|
9
|
-
-----
|
10
|
-
1. To make it easy to install a Qt binding for Ruby on all platforms using
|
11
|
-
RubyGems
|
12
|
-
2. To maintain an up-to-date binary gem for Windows that is bundled with
|
13
|
-
the latest version of Qt from http://qt.nokia.com
|
14
|
-
3. To reduce the scope and maintenance of the bindings to only bind to the
|
15
|
-
libraries provided by the Qt SDK.
|
16
|
-
4. To increase compatibility with non-linux platforms
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
QT
|
37
|
-
Cmake 2.8.
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
1. The
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
qtbindings
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
1
|
+
qtbindings
|
2
|
+
----------
|
3
|
+
This project provides bindings that allow the QT Gui toolkit to be used from the
|
4
|
+
Ruby Programming language. Overall it is a repackaging of a subset of the KDE
|
5
|
+
bindings ruby and smoke systems into a format that lends itself well to
|
6
|
+
packaging into a Ruby gem.
|
7
|
+
|
8
|
+
Goals
|
9
|
+
-----
|
10
|
+
1. To make it easy to install a Qt binding for Ruby on all platforms using
|
11
|
+
RubyGems
|
12
|
+
2. To maintain an up-to-date binary gem for Windows that is bundled with
|
13
|
+
the latest version of Qt from http://qt.nokia.com
|
14
|
+
3. To reduce the scope and maintenance of the bindings to only bind to the
|
15
|
+
libraries provided by the Qt SDK.
|
16
|
+
4. To increase compatibility with non-linux platforms
|
17
|
+
|
18
|
+
Note: This gem only supports Ruby 1.9.3 and Ruby 2.0.0 starting at qtbindings version 4.8.5.0.
|
19
|
+
For Ruby 1.8.x you can try installing version 4.8.3.0, however upgrading Ruby is
|
20
|
+
highly recommended.
|
21
|
+
|
22
|
+
Usage Notes
|
23
|
+
------------
|
24
|
+
Ruby threading is now fully supported out of the box. All GUI access however must be done
|
25
|
+
inside the main thread. To support updating the GUI using other threads, use the following function
|
26
|
+
provided in Qt4.rb:
|
27
|
+
|
28
|
+
Qt.execute_in_main_thread(true) do
|
29
|
+
# GUI code here
|
30
|
+
end
|
31
|
+
|
32
|
+
Tested Environments
|
33
|
+
--------------------
|
34
|
+
Mac OSX 10.6.8 (Snow Leopard)
|
35
|
+
XCode 3.2.6 (gcc 4.2.1)
|
36
|
+
Brew - QT 4.8.5
|
37
|
+
Cmake 2.8.11.2
|
38
|
+
Ruby 1.9.3p448
|
39
|
+
|
40
|
+
Windows XP SP3
|
41
|
+
QT SDK 4.8.5
|
42
|
+
Cmake 2.8.8
|
43
|
+
Ruby 1.9.3p448 and Ruby 2.0.0p353 installed from rubyinstaller.org
|
44
|
+
|
45
|
+
Ubuntu Linux 11.10
|
46
|
+
QT SDK 4.8.1
|
47
|
+
Cmake 2.8.5
|
48
|
+
|
49
|
+
Compiling
|
50
|
+
---------
|
51
|
+
Compiling qtbindings requires the following prerequisites:
|
52
|
+
1. cmake 2.8.x installed and in your path
|
53
|
+
2. QT 4.8.x installed and in your path
|
54
|
+
3. Ruby installed and in your path
|
55
|
+
4. gcc 4.x
|
56
|
+
|
57
|
+
Additionally: all of the operating system prequisites for compiling,
|
58
|
+
window system development, opengl, etc must be installed.
|
59
|
+
|
60
|
+
Rakefile
|
61
|
+
--------
|
62
|
+
Perform the following steps to build the gem on Unix or Mac:
|
63
|
+
1. rake VERSION=4.8.x.y gem
|
64
|
+
Where the x is the subversion of QT and y is the patch level of qtbindings
|
65
|
+
|
66
|
+
Perform the following steps to build the gem on Windows:
|
67
|
+
1. Ensure you are running Ruby 1.9.3
|
68
|
+
ruby -v #=> ruby 1.9.3
|
69
|
+
2. rake distclean
|
70
|
+
3. rake build
|
71
|
+
4. Switch to Ruby 2.0.0
|
72
|
+
ruby -v #=> ruby 2.0.0
|
73
|
+
5. rake build
|
74
|
+
6. rake VERSION=4.8.x.y gemnative
|
75
|
+
Where the x is the subversion of QT and y is the patch level of qtbindings
|
76
|
+
|
77
|
+
Note: The gem is built twice to create the FAT binary which will work
|
78
|
+
on both Ruby 1.9 and 2.0. The Windows utility called pik is useful for
|
79
|
+
switching between Ruby versions.
|
80
|
+
|
81
|
+
After building the gem, verify the examples work by running:
|
82
|
+
1. rake examples
|
83
|
+
|
84
|
+
Operating Systems Notes:
|
85
|
+
|
86
|
+
Debian Linux
|
87
|
+
------------
|
88
|
+
1. The following should get you the packages you need:
|
89
|
+
sudo aptitude install build-essential bison openssl libreadline5
|
90
|
+
libreadline-dev curl git-core zlib1g zlib1g-dev libssl-dev vim
|
91
|
+
libsqlite3-0 libsqlite3-dev sqlite3 libreadline5-dev libreadline6-dev
|
92
|
+
libxml2-dev git-core subversion autoconf xorg-dev libgl1-mesa-dev
|
93
|
+
libglu1-mesa-dev
|
94
|
+
|
95
|
+
Mac OSX Snow Leopard
|
96
|
+
-----------------------
|
97
|
+
1. XCode
|
98
|
+
2. Brew (http://mxcl.github.com/homebrew/)
|
99
|
+
Install qt with 'brew install qt'
|
100
|
+
|
101
|
+
Windows - Note: Only necessary for debugging (binary gem available)
|
102
|
+
--------
|
103
|
+
1. mingw 4.4 in your path (from here or elsewhere: http://nosymbolfound.blogspot.com/2012/12/since-until-now-qt-under-windows-is.html#!/2012/12/since-until-now-qt-under-windows-is.html)
|
104
|
+
|
105
|
+
Install
|
106
|
+
------
|
107
|
+
On linux/MacOSX you must make sure you have all the necessary prerequisites
|
108
|
+
installed or the compile will fail.
|
109
|
+
|
110
|
+
gem install qtbindings
|
111
|
+
|
112
|
+
This should always work flawlessly on Windows because everything is nicely
|
113
|
+
packaged into a binary gem. However, the gem is very large ~90MB, so please
|
114
|
+
be patient while gem downloads the file.
|
115
|
+
|
116
|
+
To get help:
|
117
|
+
You can file tickets here at github for issues specific to the
|
118
|
+
qtbindings gem.
|
119
|
+
|
120
|
+
License:
|
121
|
+
This library is released under the LGPL Version 2.1.
|
122
|
+
See COPYING.LIB.txt
|
123
|
+
|
124
|
+
Disclaimer:
|
125
|
+
Almost all of this code was written by the guys who worked on the KDE
|
126
|
+
bindings project, particurly Arno Rehn and Richard Dale. I hope to increase
|
127
|
+
the adoption and use of the code that they have written.
|
data/{TODO.txt → todo.txt}
RENAMED
metadata
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qtbindings
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.8.
|
5
|
-
prerelease:
|
4
|
+
version: 4.8.5.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
7
|
+
- Ryan Melton
|
8
|
+
- Jason Thomas
|
8
9
|
- Richard Dale
|
9
10
|
- Arno Rehn
|
10
|
-
- Ryan Melton
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2013-12-03 00:00:00.000000000 Z
|
15
15
|
dependencies: []
|
16
16
|
description: qtbindings provides ruby bindings to QT4.x. It is derived from the kdebindings
|
17
17
|
project.
|
@@ -28,7 +28,7 @@ extra_rdoc_files: []
|
|
28
28
|
files:
|
29
29
|
- lib/Qt/qtruby4.rb
|
30
30
|
- lib/Qt.rb
|
31
|
-
- lib/
|
31
|
+
- lib/qt4.rb
|
32
32
|
- lib/qtbindings_version.rb
|
33
33
|
- lib/qtscript/qtscript.rb
|
34
34
|
- lib/qttest/qttest.rb
|
@@ -621,7 +621,7 @@ files:
|
|
621
621
|
- ext/ruby/qtruby/src/marshall_primitives.h
|
622
622
|
- ext/ruby/qtruby/src/marshall_types.cpp
|
623
623
|
- ext/ruby/qtruby/src/marshall_types.h
|
624
|
-
- ext/ruby/qtruby/src/
|
624
|
+
- ext/ruby/qtruby/src/qt.cpp
|
625
625
|
- ext/ruby/qtruby/src/qtruby.cpp
|
626
626
|
- ext/ruby/qtruby/src/qtruby.h
|
627
627
|
- ext/ruby/qtruby/src/smokeruby.h
|
@@ -785,13 +785,13 @@ files:
|
|
785
785
|
- ext/smoke/smokebase/CMakeLists.txt
|
786
786
|
- ext/smoke/smokebase/smokebase.cpp
|
787
787
|
- ext/smoke/solid_smoke.h
|
788
|
-
-
|
788
|
+
- changelog.txt
|
789
789
|
- CMakeLists.txt
|
790
790
|
- COPYING.LIB.txt
|
791
791
|
- COPYING.txt
|
792
|
-
-
|
793
|
-
-
|
794
|
-
-
|
792
|
+
- known_issues.txt
|
793
|
+
- readme.txt
|
794
|
+
- todo.txt
|
795
795
|
- extconf.rb
|
796
796
|
- qtbindings.gemspec
|
797
797
|
- qtbindingsnative.gemspec
|
@@ -799,18 +799,17 @@ files:
|
|
799
799
|
homepage: http://github.com/ryanmelt/qtbindings
|
800
800
|
licenses:
|
801
801
|
- LGPLv2.1
|
802
|
+
metadata: {}
|
802
803
|
post_install_message:
|
803
804
|
rdoc_options: []
|
804
805
|
require_paths:
|
805
806
|
- lib
|
806
807
|
required_ruby_version: !ruby/object:Gem::Requirement
|
807
|
-
none: false
|
808
808
|
requirements:
|
809
809
|
- - ! '>='
|
810
810
|
- !ruby/object:Gem::Version
|
811
811
|
version: '0'
|
812
812
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
813
|
-
none: false
|
814
813
|
requirements:
|
815
814
|
- - ! '>='
|
816
815
|
- !ruby/object:Gem::Version
|
@@ -818,8 +817,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
818
817
|
requirements:
|
819
818
|
- none
|
820
819
|
rubyforge_project: qtbindings
|
821
|
-
rubygems_version: 1.
|
820
|
+
rubygems_version: 2.1.5
|
822
821
|
signing_key:
|
823
|
-
specification_version:
|
822
|
+
specification_version: 4
|
824
823
|
summary: Qt bindings for ruby
|
825
824
|
test_files: []
|