gir_ffi 0.3.2 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,7 @@
1
+ == 0.4.0 / 2012-08-24
2
+
3
+ * Move Gtk+ bindings to their own gem (gir_ffi-gtk).
4
+
1
5
  == 0.3.2 / 2012-08-24
2
6
 
3
7
  * Correctly set FFI return type when callbacks that return GObjects have
@@ -13,10 +13,10 @@ Ruby bindings for GNOME using the GObject Introspection Repository.
13
13
  == Features/Notes
14
14
 
15
15
  * Create bindings to any GObject-based library.
16
- * Supports both Gtk+ 2 and Gtk+ 3.
17
16
  * Bindings generated at runtime.
18
17
  * Provides overridden bindings for selected methods.
19
- * Require 'ffi-gtk2' or 'ffi-gtk3' to load overrides for Gtk2 or Gtk3.
18
+ * Install 'gir_ffi-gtk' and require 'gir_ffi-gtk2' or 'gir_ffi-gtk3' to
19
+ load overrides for Gtk2 or Gtk3.
20
20
 
21
21
  == Install
22
22
 
@@ -24,8 +24,6 @@ Ruby bindings for GNOME using the GObject Introspection Repository.
24
24
 
25
25
  == Synopsis
26
26
 
27
- Basic usage:
28
-
29
27
  require 'gir_ffi'
30
28
 
31
29
  GirFFI.setup :TheNamespace
@@ -35,26 +33,6 @@ Basic usage:
35
33
  obj = TheNamespace::SomeClass.new
36
34
  obj.some_method with, some, args
37
35
 
38
- Gtk2:
39
-
40
- require 'ffi-gtk2'
41
- Gtk.init
42
- win = Gtk::Window.new :toplevel
43
- win.show
44
- GObject.signal_connect(win, "destroy") { Gtk.main_quit }
45
- Gtk.main
46
-
47
- Gtk3:
48
-
49
- require 'ffi-gtk3'
50
- Gtk.init
51
- win = Gtk::Window.new :toplevel
52
- win.show
53
- GObject.signal_connect(win, "destroy") { Gtk.main_quit }
54
- Gtk.main
55
-
56
- See the `examples/` directory for more, well, examples.
57
-
58
36
  == Requirements
59
37
 
60
38
  * Ruby-FFI of course
@@ -66,9 +44,9 @@ available under the name ending in plain `.so`. If GirFFI complains that it
66
44
  cannot find the library, try installing development packages for those
67
45
  libraries.
68
46
 
69
- On Debian and Ubuntu, the following set of packages should be enough to get
70
- `rake test` working: `libgirepository1.0-dev` (at least version 0.10),
71
- `gir1.2-gtk-2.0` and `libgtk2.0-dev`.
47
+ On Debian and Ubuntu, installing `libgirepository1.0-dev` and
48
+ `gobject-introspection` (at least version 0.10) should be enough to get `rake
49
+ test` working.
72
50
 
73
51
  == Hacking and contributing
74
52
 
@@ -1,4 +1,4 @@
1
1
  module GirFFI
2
- VERSION = "0.3.2"
2
+ VERSION = "0.4.0"
3
3
  end
4
4
 
@@ -4,7 +4,7 @@ if RUBY_PLATFORM == 'java'
4
4
  require 'rubygems'
5
5
  end
6
6
 
7
- if RUBY_VERSION >= "1.9" and ENV["SIMPLECOV"]
7
+ if RUBY_VERSION >= "1.9"
8
8
  require 'simplecov'
9
9
  SimpleCov.start
10
10
  end
@@ -1,7 +1,5 @@
1
1
  require File.expand_path('gir_ffi_test_helper.rb', File.dirname(__FILE__))
2
2
 
3
- require 'ffi-gtk3'
4
-
5
3
  class TypeBuilderTest < MiniTest::Spec
6
4
  context "The Builder::Type class" do
7
5
  context 'the find_signal method' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gir_ffi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -102,10 +102,8 @@ extra_rdoc_files:
102
102
  - README.rdoc
103
103
  - TODO.rdoc
104
104
  files:
105
- - lib/ffi-gtk2.rb
106
105
  - lib/ffi-gobject_introspection.rb
107
106
  - lib/gir_ffi.rb
108
- - lib/ffi-gtk/base.rb
109
107
  - lib/gir_ffi/lib_c.rb
110
108
  - lib/gir_ffi/builder/function.rb
111
109
  - lib/gir_ffi/builder/type/constant.rb
@@ -195,7 +193,6 @@ files:
195
193
  - lib/ffi-gobject_introspection/i_registered_type_info.rb
196
194
  - lib/ffi-gobject_introspection/g_error.rb
197
195
  - lib/ffi-gobject.rb
198
- - lib/ffi-gtk3.rb
199
196
  - test/test_helper.rb
200
197
  - test/unit/user_defined_registered_type_info_test.rb
201
198
  - test/unit/unintrospectable_type_builder_test.rb
@@ -230,13 +227,11 @@ files:
230
227
  - test/lib/autogen.sh
231
228
  - test/builder_test.rb
232
229
  - test/gir_ffi_test_helper.rb
233
- - test/ffi-gtk/gtk_test.rb
234
230
  - test/integration/derived_classes_test.rb
235
231
  - test/integration/generated_regress_test.rb
236
232
  - test/integration/method_lookup_test.rb
237
233
  - test/integration/generated_gimarshallingtests_test.rb
238
234
  - test/integration/generated_gio_test.rb
239
- - test/integration/generated_gtk_test.rb
240
235
  - test/integration/pretty_print_test.rb
241
236
  - test/integration/generated_pango_test.rb
242
237
  - test/integration/generated_gobject_test.rb
@@ -270,12 +265,7 @@ files:
270
265
  - examples/leak_test.rb
271
266
  - examples/demo_ffi_safe_inherited_layout.rb
272
267
  - examples/demo_ffi_inherited_layout.rb
273
- - examples/04_webkit.rb
274
- - examples/01_empty_window.rb
275
- - examples/03_upgraded_hello_world.rb
276
268
  - examples/print_class.rb
277
- - examples/02_hello_world.rb
278
- - examples/05_notification.rb
279
269
  - README.rdoc
280
270
  - DESIGN.rdoc
281
271
  - TODO.rdoc
@@ -330,14 +320,12 @@ test_files:
330
320
  - test/ffi-gobject_introspection/i_object_info_test.rb
331
321
  - test/ffi-gobject_introspection/i_repository_test.rb
332
322
  - test/ffi-gobject_introspection/lib_test.rb
333
- - test/ffi-gtk/gtk_test.rb
334
323
  - test/gir_ffi_test_helper.rb
335
324
  - test/girffi_test.rb
336
325
  - test/integration/derived_classes_test.rb
337
326
  - test/integration/generated_gimarshallingtests_test.rb
338
327
  - test/integration/generated_gio_test.rb
339
328
  - test/integration/generated_gobject_test.rb
340
- - test/integration/generated_gtk_test.rb
341
329
  - test/integration/generated_pango_test.rb
342
330
  - test/integration/generated_regress_test.rb
343
331
  - test/integration/method_lookup_test.rb
@@ -1,12 +0,0 @@
1
- #
2
- # Based on the empty window Gtk+ tutorial example at
3
- # http://library.gnome.org/devel/gtk-tutorial/2.90/c39.html
4
- #
5
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
6
- require 'ffi-gtk3'
7
-
8
- Gtk.init
9
- win = Gtk::Window.new :toplevel
10
- win.show
11
- GObject.signal_connect(win, "destroy") { Gtk.main_quit }
12
- Gtk.main
@@ -1,28 +0,0 @@
1
- #
2
- # Based on the 'Hello world' Gtk+ tutorial example at
3
- # http://library.gnome.org/devel/gtk-tutorial/2.90/c39.html#SEC-HELLOWORLD
4
- #
5
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
6
- require 'ffi-gtk3'
7
-
8
- Gtk.init
9
-
10
- win = Gtk::Window.new(:toplevel)
11
- GObject.signal_connect win, "delete-event" do
12
- puts "delete event occured"
13
- true
14
- end
15
-
16
- GObject.signal_connect(win, "destroy") { Gtk.main_quit }
17
- # FIXME: #border_width= should work
18
- win.set_border_width 10
19
-
20
- but = Gtk::Button.new_with_label("Hello World")
21
- GObject.signal_connect(but, "clicked") { win.destroy }
22
-
23
- win.add but
24
-
25
- but.show
26
- win.show
27
-
28
- Gtk.main
@@ -1,42 +0,0 @@
1
- #
2
- # Based on the 'Upgraded Hello world' Gtk+ tutorial example at
3
- # http://library.gnome.org/devel/gtk-tutorial/2.90/x344.html
4
- #
5
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
6
- require 'ffi-gtk3'
7
-
8
- callback = lambda { |widget, data|
9
- puts "Hello again - #{data} was pressed"
10
- }
11
-
12
- Gtk.init
13
-
14
- win = Gtk::Window.new(:toplevel)
15
- win.title= "Hello Buttons!"
16
-
17
- GObject.signal_connect win, "delete-event" do
18
- Gtk.main_quit
19
- false
20
- end
21
-
22
- # FIXME: #border_width= should work
23
- win.set_border_width 10
24
-
25
- box = Gtk::HBox.new(false, 0)
26
- win.add box
27
-
28
- button = Gtk::Button.new_with_label("Button 1")
29
- GObject.signal_connect button, "clicked", "button 1", &callback
30
- box.pack_start button, true, true, 0
31
- button.show
32
-
33
- button = Gtk::Button.new_with_label("Button 2")
34
- GObject.signal_connect button, "clicked", "button 2", &callback
35
- box.pack_start button, true, true, 0
36
- button.show
37
-
38
- box.show
39
- win.show
40
-
41
- Gtk.main
42
-
@@ -1,15 +0,0 @@
1
- # Based on http://www.idle-hacking.com/2010/02/webkit-ruby-and-gtk/
2
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
3
- require 'ffi-gtk3'
4
-
5
- GirFFI.setup :WebKit, '3.0'
6
-
7
- Gtk.init
8
-
9
- win = Gtk::Window.new :toplevel
10
- wv = WebKit::WebView.new
11
- win.add(wv)
12
- win.show_all
13
- wv.open('http://www.google.com/')
14
- GObject.signal_connect(win, "destroy") { Gtk.main_quit }
15
- Gtk.main
@@ -1,34 +0,0 @@
1
- #
2
- # Simple notification example.
3
- #
4
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
5
- require 'ffi-gtk3'
6
-
7
- GirFFI.setup :Notify
8
-
9
- # Both Gtk and Notify need to be init'ed.
10
- Gtk.init
11
- Notify.init "notification test"
12
-
13
- # Basic set up of the notification.
14
- nf = Notify::Notification.new "Hello!", "Hi there.", "gtk-dialog-info"
15
- nf.timeout = 3000
16
- nf.urgency = :critical
17
-
18
- # Show a button 'Test' in the notification, with a callback function.
19
- nf.add_action "test", "Test", Proc.new { |obj, action, user_data|
20
- puts "Action #{action} clicked."
21
- }, nil, nil
22
-
23
- # In this case, we want the program to end once the notification is gone,
24
- # but not before.
25
- GObject.signal_connect(nf, "closed") {
26
- puts "Notification closed."
27
- Gtk.main_quit
28
- }
29
-
30
- # Show the notification.
31
- nf.show
32
-
33
- # Start a main loop to wait for the notification to be closed.
34
- Gtk.main
@@ -1,17 +0,0 @@
1
- module Gtk
2
- _setup_method "init"
3
-
4
- def self.init_with_auto_argv
5
- my_args = init_without_auto_argv [$0, *ARGV]
6
- my_args.shift
7
- ARGV.replace my_args
8
- end
9
- class << self
10
- alias init_without_auto_argv init
11
- alias init init_with_auto_argv
12
- end
13
- end
14
-
15
- Gtk.class_eval do
16
- end
17
-
@@ -1,5 +0,0 @@
1
- require 'gir_ffi'
2
-
3
- GirFFI.setup :Gtk, '2.0'
4
-
5
- require 'ffi-gtk/base'
@@ -1,5 +0,0 @@
1
- require 'gir_ffi'
2
-
3
- GirFFI.setup :Gtk, '3.0'
4
-
5
- require 'ffi-gtk/base'
@@ -1,36 +0,0 @@
1
- require File.expand_path('../gir_ffi_test_helper.rb', File.dirname(__FILE__))
2
-
3
- require 'ffi-gtk3'
4
-
5
- describe Gtk do
6
- describe "::init" do
7
- before do
8
- save_module :Gtk
9
- ::Object.const_set :Gtk, Module.new
10
- Gtk.class_eval do
11
- def self.init arr
12
- ["baz", "qux", "zonk"]
13
- end
14
- end
15
- stub(Gtk)._setup_method { }
16
-
17
- load 'ffi-gtk/base.rb'
18
- end
19
-
20
- it "does not take any arguments" do
21
- assert_raises(ArgumentError) { Gtk.init 1, ["foo"] }
22
- assert_raises(ArgumentError) { Gtk.init ["foo"] }
23
- assert_nothing_raised { Gtk.init }
24
- end
25
-
26
- it "replaces ARGV with the tail of the result of the original init function" do
27
- ARGV.replace ["foo", "bar"]
28
- Gtk.init
29
- assert_equal ["qux", "zonk"], ARGV.to_a
30
- end
31
-
32
- after do
33
- restore_module :Gtk
34
- end
35
- end
36
- end
@@ -1,94 +0,0 @@
1
- require File.expand_path('../gir_ffi_test_helper.rb', File.dirname(__FILE__))
2
-
3
- # Since the tests will call Gtk+ functions, Gtk+ must be initialized.
4
- require 'ffi-gtk3'
5
- Gtk.init
6
-
7
- # Tests generated methods and functions in the Gtk namespace.
8
- class GeneratedGtkTest < MiniTest::Spec
9
- context "In the generated Gtk module" do
10
- context "a Gtk::Builder instance" do
11
- setup do
12
- @builder = Gtk::Builder.new
13
- @spec = '
14
- <interface>
15
- <object class="GtkButton" id="foo">
16
- <signal handler="on_button_clicked" name="clicked"/>
17
- </object>
18
- </interface>
19
- '
20
- end
21
-
22
- should "load spec" do
23
- assert_nothing_raised { @builder.add_from_string @spec, @spec.length }
24
- end
25
-
26
- context "its #get_object method" do
27
- should "return objects of the proper class" do
28
- @builder.add_from_string @spec, @spec.length
29
- o = @builder.get_object "foo"
30
- assert_instance_of Gtk::Button, o
31
- end
32
- end
33
-
34
- context "its #connect_signals_full method" do
35
- setup do
36
- @builder.add_from_string @spec, @spec.length
37
- end
38
- should "pass arguments correctly" do
39
- aa = nil
40
- @builder.connect_signals_full Proc.new {|*args| aa = args}, nil
41
- b, o, sn, hn, co, f, ud = aa
42
- assert_instance_of Gtk::Builder, b
43
- assert_equal b.to_ptr, @builder.to_ptr
44
- assert_instance_of Gtk::Button, o
45
- assert_equal "clicked", sn
46
- assert_equal "on_button_clicked", hn
47
- assert_equal nil, co
48
- assert_equal 0, f
49
- assert_equal nil, ud
50
- end
51
- end
52
- end
53
-
54
- context "a Gtk::Window instance" do
55
- setup do
56
- @w = Gtk::Window.new :toplevel
57
- end
58
-
59
- should "start with a refcount of 2 (one for us, one for GTK+)" do
60
- assert_equal 2, ref_count(@w)
61
- end
62
- end
63
-
64
- context "Gtk::RadioButton" do
65
- context ".new" do
66
- should "work when called with nil" do
67
- assert_nothing_raised {
68
- Gtk::RadioButton.new nil
69
- }
70
- end
71
- end
72
-
73
- context "#get_group" do
74
- should "return a GLib::SList object" do
75
- btn = Gtk::RadioButton.new nil
76
- grp = btn.get_group
77
- assert_instance_of GLib::SList, grp
78
- end
79
- end
80
-
81
- context ".new" do
82
- should "work when called with the result of #get_group" do
83
- assert_nothing_raised {
84
- btn = Gtk::RadioButton.new nil
85
- grp = btn.get_group
86
- Gtk::RadioButton.new grp
87
- }
88
- end
89
- end
90
-
91
- end
92
- end
93
- end
94
-