glib-eventable 0.1.2 → 0.1.3
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.
- data/README.md +11 -3
- data/Rakefile +1 -0
- data/VERSION +1 -1
- data/glib-eventable.gemspec +5 -2
- data/lib/glib/eventable.rb +18 -9
- data/spec/glib/eventable_spec.rb +10 -0
- data/spec/support/windows.rb +6 -2
- metadata +18 -2
data/README.md
CHANGED
@@ -24,6 +24,14 @@ class Window < Gtk::Window
|
|
24
24
|
end
|
25
25
|
```
|
26
26
|
|
27
|
+
Or simply:
|
28
|
+
|
29
|
+
```ruby
|
30
|
+
class Window < Gtk::Window
|
31
|
+
event destroy: -> { Gtk.main_quit }
|
32
|
+
end
|
33
|
+
```
|
34
|
+
|
27
35
|
This allows you to create subclasses of `Gtk` objects in a more OOP style.
|
28
36
|
|
29
37
|
## Install
|
@@ -39,13 +47,13 @@ require 'glib/eventable'
|
|
39
47
|
|
40
48
|
class MyToggleRenderer < Gtk::CellRendererToggle
|
41
49
|
event toggled: :on_toggle
|
42
|
-
|
50
|
+
|
43
51
|
def initialize(column)
|
44
52
|
@column = column
|
45
|
-
|
53
|
+
|
46
54
|
super()
|
47
55
|
end
|
48
|
-
|
56
|
+
|
49
57
|
def on_toggle(path)
|
50
58
|
iter = @column.tree_view.model.get_iter(path)
|
51
59
|
|
data/Rakefile
CHANGED
@@ -27,6 +27,7 @@ spec = Gem::Specification.new do |s|
|
|
27
27
|
s.add_development_dependency 'at', '~> 0.1.3'
|
28
28
|
s.add_development_dependency 'rake', '~> 0.9'
|
29
29
|
s.add_development_dependency 'gtk2', '~> 1.1.5'
|
30
|
+
s.add_development_dependency 'rspec', '~> 2.12'
|
30
31
|
s.add_development_dependency 'guard-rspec', '~> 2.1'
|
31
32
|
s.add_development_dependency 'guard-yard', '~> 2.0'
|
32
33
|
s.add_development_dependency 'guard-shell', '~> 0.5'
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.3
|
data/glib-eventable.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "glib-eventable"
|
5
|
-
s.version = "0.1.
|
5
|
+
s.version = "0.1.3"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Ryan Scott Lewis"]
|
9
|
-
s.date = "2012-
|
9
|
+
s.date = "2012-12-04"
|
10
10
|
s.description = "This is a helper gem for ruby-gnome2 applications that allows developers to easily connect signals to methods."
|
11
11
|
s.email = "ryan@rynet.us"
|
12
12
|
s.files = [".gitignore", ".rvmrc", "Gemfile", "Guardfile", "LICENSE", "README.md", "Rakefile", "VERSION", "glib-eventable.gemspec", "lib/glib-eventable.rb", "lib/glib/eventable.rb", "spec/glib/eventable_spec.rb", "spec/spec_helper.rb", "spec/support/windows.rb"]
|
@@ -24,6 +24,7 @@ Gem::Specification.new do |s|
|
|
24
24
|
s.add_development_dependency(%q<at>, ["~> 0.1.3"])
|
25
25
|
s.add_development_dependency(%q<rake>, ["~> 0.9"])
|
26
26
|
s.add_development_dependency(%q<gtk2>, ["~> 1.1.5"])
|
27
|
+
s.add_development_dependency(%q<rspec>, ["~> 2.12"])
|
27
28
|
s.add_development_dependency(%q<guard-rspec>, ["~> 2.1"])
|
28
29
|
s.add_development_dependency(%q<guard-yard>, ["~> 2.0"])
|
29
30
|
s.add_development_dependency(%q<guard-shell>, ["~> 0.5"])
|
@@ -37,6 +38,7 @@ Gem::Specification.new do |s|
|
|
37
38
|
s.add_dependency(%q<at>, ["~> 0.1.3"])
|
38
39
|
s.add_dependency(%q<rake>, ["~> 0.9"])
|
39
40
|
s.add_dependency(%q<gtk2>, ["~> 1.1.5"])
|
41
|
+
s.add_dependency(%q<rspec>, ["~> 2.12"])
|
40
42
|
s.add_dependency(%q<guard-rspec>, ["~> 2.1"])
|
41
43
|
s.add_dependency(%q<guard-yard>, ["~> 2.0"])
|
42
44
|
s.add_dependency(%q<guard-shell>, ["~> 0.5"])
|
@@ -51,6 +53,7 @@ Gem::Specification.new do |s|
|
|
51
53
|
s.add_dependency(%q<at>, ["~> 0.1.3"])
|
52
54
|
s.add_dependency(%q<rake>, ["~> 0.9"])
|
53
55
|
s.add_dependency(%q<gtk2>, ["~> 1.1.5"])
|
56
|
+
s.add_dependency(%q<rspec>, ["~> 2.12"])
|
54
57
|
s.add_dependency(%q<guard-rspec>, ["~> 2.1"])
|
55
58
|
s.add_dependency(%q<guard-yard>, ["~> 2.0"])
|
56
59
|
s.add_dependency(%q<guard-shell>, ["~> 0.5"])
|
data/lib/glib/eventable.rb
CHANGED
@@ -16,22 +16,31 @@ module GLib
|
|
16
16
|
@events ||= ancestors[1].respond_to?(:events) ? ancestors[1].events.dup : {}
|
17
17
|
return @events if event_hash.nil?
|
18
18
|
|
19
|
-
raise TypeError, 'event_hash must respond to :to_hash or :to_h' unless
|
19
|
+
raise TypeError, 'event_hash must respond to :to_hash or :to_h' unless event_hash.respond_to?(:to_hash) || event_hash.respond_to?(:to_h)
|
20
20
|
event_hash = event_hash.to_hash rescue event_hash.to_h
|
21
|
+
|
22
|
+
@events = @events.merge(event_hash).each_with_object({}) do |(event_name, method_name_or_proc), memo|
|
23
|
+
raise TypeError, 'event_hash keys must respond to :to_s' unless event_hash.respond_to?(:to_s)
|
24
|
+
raise TypeError, 'event_hash values must respond to :call or :to_s' unless method_name_or_proc.respond_to?(:call) || method_name_or_proc.respond_to?(:to_s)
|
25
|
+
|
26
|
+
event_name = event_name.to_s.downcase.strip
|
27
|
+
method_name_or_proc = method_name_or_proc.to_s.downcase.strip.to_sym unless method_name_or_proc.respond_to?(:call)
|
21
28
|
|
22
|
-
|
29
|
+
memo[event_name] = method_name_or_proc
|
30
|
+
end
|
23
31
|
end
|
24
32
|
alias_method :events, :event
|
25
33
|
|
26
34
|
# Connect signals to events before initialization.
|
27
35
|
def new(*args)
|
28
36
|
super.instance_eval do
|
29
|
-
self.class.events.each do |event_name,
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
37
|
+
self.class.events.each do |event_name, method_name_or_proc|
|
38
|
+
signal_connect(event_name) do |*arguments|
|
39
|
+
proc = method_name_or_proc.respond_to?(:call) ? method_name_or_proc : method(method_name_or_proc).to_proc
|
40
|
+
arguments = arguments[0...proc.arity] if proc.arity >= 0
|
41
|
+
|
42
|
+
instance_exec(*arguments, &proc)
|
43
|
+
end
|
35
44
|
end
|
36
45
|
|
37
46
|
self
|
@@ -39,7 +48,7 @@ module GLib
|
|
39
48
|
end
|
40
49
|
end
|
41
50
|
|
42
|
-
# Modify all Instantiatable with Eventable
|
51
|
+
# Modify all Instantiatable objects with Eventable
|
43
52
|
class Instantiatable
|
44
53
|
extend Eventable
|
45
54
|
end
|
data/spec/glib/eventable_spec.rb
CHANGED
@@ -23,3 +23,13 @@ end
|
|
23
23
|
describe MainWindow do
|
24
24
|
it_behaves_like 'an eventable GLib object'
|
25
25
|
end
|
26
|
+
|
27
|
+
describe ProcWindow do
|
28
|
+
describe '#on_destroy' do
|
29
|
+
it 'should be run when a `destroy` signal is emitted' do
|
30
|
+
subject.at.is_destroyed.should be_false
|
31
|
+
subject.signal_emit('destroy')
|
32
|
+
subject.at.is_destroyed.should == :true_from_proc
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/spec/support/windows.rb
CHANGED
@@ -1,14 +1,18 @@
|
|
1
1
|
class BaseWindow < Gtk::Window
|
2
|
-
event
|
2
|
+
event destroy: :on_destroy
|
3
3
|
|
4
4
|
def initialize
|
5
5
|
super
|
6
6
|
@is_destroyed = false
|
7
7
|
end
|
8
8
|
|
9
|
-
def on_destroy
|
9
|
+
def on_destroy(*args)
|
10
10
|
@is_destroyed = true
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
14
|
class MainWindow < BaseWindow; end
|
15
|
+
|
16
|
+
class ProcWindow < BaseWindow
|
17
|
+
event destroy: -> { |*args| @is_destroyed = :true_from_proc }
|
18
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glib-eventable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-12-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: version
|
@@ -91,6 +91,22 @@ dependencies:
|
|
91
91
|
- - ~>
|
92
92
|
- !ruby/object:Gem::Version
|
93
93
|
version: 1.1.5
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: rspec
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ~>
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '2.12'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '2.12'
|
94
110
|
- !ruby/object:Gem::Dependency
|
95
111
|
name: guard-rspec
|
96
112
|
requirement: !ruby/object:Gem::Requirement
|