context 0.0.16 → 0.0.22
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/AUTHORS +1 -0
- data/COPYING +679 -0
- data/README +188 -0
- data/Rakefile.rb +64 -18
- data/lib/Context/Bridge.rb +7 -6
- data/lib/Context/Context.rb +14 -35
- data/lib/Context/Gtk/Widget.rb +139 -33
- data/lib/Context/Log.rb +10 -0
- data/lib/Context/Publisher.rb +108 -0
- data/lib/Context/Spec.rb +8 -0
- data/lib/Context/Version.rb +1 -1
- data/lib/Context/View.rb +16 -15
- data/lib/Context/Views/Gtk/PageView.rb +3 -23
- data/lib/Context/Views/Gtk/Widgets/MainWindow.rb +70 -0
- data/lib/Context/Views/Gtk/Widgets/VBox.rb +29 -0
- data/lib/Context/Widget.rb +18 -27
- data/spec/Context/Bridge_spec.rb +19 -20
- data/spec/Context/Context_spec.rb +77 -63
- data/spec/Context/Gtk/Widget_spec.rb +23 -23
- data/spec/Context/Publisher_spec.rb +53 -0
- data/spec/Context/View_spec.rb +10 -14
- data/spec/Context/Views/Gtk/PageView_spec.rb +25 -9
- data/spec/Context/require_all_spec.rb +14 -7
- data/test_results.html +84 -121
- metadata +74 -128
- data/coverage/-usr-local-lib-site_ruby-1_8-atk_rb.html +0 -612
- data/coverage/-usr-local-lib-site_ruby-1_8-gdk_pixbuf2_rb.html +0 -637
- data/coverage/-usr-local-lib-site_ruby-1_8-glib2_rb.html +0 -829
- data/coverage/-usr-local-lib-site_ruby-1_8-gtk2-base_rb.html +0 -709
- data/coverage/-usr-local-lib-site_ruby-1_8-gtk2_rb.html +0 -623
- data/coverage/-usr-local-lib-site_ruby-1_8-pango_rb.html +0 -665
- data/coverage/-var-lib-gems-1_8-gems-cairo-1_7_0-src-lib-cairo-color_rb.html +0 -865
- data/coverage/-var-lib-gems-1_8-gems-cairo-1_7_0-src-lib-cairo-colors_rb.html +0 -1266
- data/coverage/-var-lib-gems-1_8-gems-cairo-1_7_0-src-lib-cairo-constants_rb.html +0 -632
- data/coverage/-var-lib-gems-1_8-gems-cairo-1_7_0-src-lib-cairo-context-blur_rb.html +0 -655
- data/coverage/-var-lib-gems-1_8-gems-cairo-1_7_0-src-lib-cairo-context-circle_rb.html +0 -619
- data/coverage/-var-lib-gems-1_8-gems-cairo-1_7_0-src-lib-cairo-context-color_rb.html +0 -621
- data/coverage/-var-lib-gems-1_8-gems-cairo-1_7_0-src-lib-cairo-context-path_rb.html +0 -726
- data/coverage/-var-lib-gems-1_8-gems-cairo-1_7_0-src-lib-cairo-context-rectangle_rb.html +0 -643
- data/coverage/-var-lib-gems-1_8-gems-cairo-1_7_0-src-lib-cairo-context-triangle_rb.html +0 -622
- data/coverage/-var-lib-gems-1_8-gems-cairo-1_7_0-src-lib-cairo-context_rb.html +0 -639
- data/coverage/-var-lib-gems-1_8-gems-cairo-1_7_0-src-lib-cairo-paper_rb.html +0 -793
- data/coverage/-var-lib-gems-1_8-gems-cairo-1_7_0-src-lib-cairo-papers_rb.html +0 -651
- data/coverage/-var-lib-gems-1_8-gems-cairo-1_7_0-src-lib-cairo-path_rb.html +0 -625
- data/coverage/-var-lib-gems-1_8-gems-cairo-1_7_0-src-lib-cairo-point_rb.html +0 -617
- data/coverage/-var-lib-gems-1_8-gems-cairo-1_7_0-src-lib-cairo_rb.html +0 -756
- data/coverage/index.html +0 -1170
- data/coverage/lib-Context-Bridge_rb.html +0 -673
- data/coverage/lib-Context-Context_rb.html +0 -756
- data/coverage/lib-Context-EnumeratedType_rb.html +0 -661
- data/coverage/lib-Context-ExecutionProxy_rb.html +0 -671
- data/coverage/lib-Context-Gtk-App_rb.html +0 -638
- data/coverage/lib-Context-Gtk-Key_rb.html +0 -664
- data/coverage/lib-Context-Gtk-Widget_rb.html +0 -667
- data/coverage/lib-Context-KeyAssignment_rb.html +0 -641
- data/coverage/lib-Context-KeyMap_rb.html +0 -653
- data/coverage/lib-Context-Key_rb.html +0 -667
- data/coverage/lib-Context-View_rb.html +0 -659
- data/coverage/lib-Context-Views-Gtk-PageView_rb.html +0 -660
- data/coverage/lib-Context-Views-PageView_rb.html +0 -627
- data/coverage/lib-Context-Widget_rb.html +0 -650
- data/coverage/lib-Context-require_all_rb.html +0 -623
- data/doc/classes/Context.html +0 -174
- data/doc/classes/Context/Bridge.html +0 -296
- data/doc/classes/Context/Context.html +0 -564
- data/doc/classes/Context/EnumeratedType.html +0 -283
- data/doc/classes/Context/ExecutionProxy.html +0 -228
- data/doc/classes/Context/Gtk.html +0 -126
- data/doc/classes/Context/Gtk/App.html +0 -217
- data/doc/classes/Context/Gtk/Key.html +0 -292
- data/doc/classes/Context/Gtk/PageView.html +0 -245
- data/doc/classes/Context/Gtk/PageView/MainWindow.html +0 -200
- data/doc/classes/Context/Gtk/Widget.html +0 -311
- data/doc/classes/Context/Key.html +0 -305
- data/doc/classes/Context/Key/Modifier.html +0 -117
- data/doc/classes/Context/KeyAssignment.html +0 -234
- data/doc/classes/Context/KeyMap.html +0 -273
- data/doc/classes/Context/PageView.html +0 -180
- data/doc/classes/Context/View.html +0 -334
- data/doc/classes/Context/Widget.html +0 -298
- data/doc/classes/Kernel.html +0 -148
- data/doc/classes/Object.html +0 -196
- data/doc/created.rid +0 -1
- data/doc/files/lib/Context/Bridge_rb.html +0 -108
- data/doc/files/lib/Context/Context_rb.html +0 -109
- data/doc/files/lib/Context/EnumeratedType_rb.html +0 -101
- data/doc/files/lib/Context/ExecutionProxy_rb.html +0 -101
- data/doc/files/lib/Context/Gtk/App_rb.html +0 -110
- data/doc/files/lib/Context/Gtk/Key_rb.html +0 -109
- data/doc/files/lib/Context/Gtk/Widget_rb.html +0 -109
- data/doc/files/lib/Context/KeyAssignment_rb.html +0 -108
- data/doc/files/lib/Context/KeyMap_rb.html +0 -109
- data/doc/files/lib/Context/Key_rb.html +0 -108
- data/doc/files/lib/Context/Version_rb.html +0 -101
- data/doc/files/lib/Context/View_rb.html +0 -101
- data/doc/files/lib/Context/Views/Gtk/PageView_rb.html +0 -111
- data/doc/files/lib/Context/Views/PageView_rb.html +0 -108
- data/doc/files/lib/Context/Widget_rb.html +0 -101
- data/doc/files/lib/Context/require_all_rb.html +0 -101
- data/doc/fr_class_index.html +0 -46
- data/doc/fr_file_index.html +0 -42
- data/doc/fr_method_index.html +0 -103
- data/doc/index.html +0 -24
- data/doc/rdoc-style.css +0 -208
- data/lib/Context/EnumeratedType.rb +0 -51
- data/lib/Context/ExecutionProxy.rb +0 -61
- data/lib/Context/Gtk/Key.rb +0 -54
- data/lib/Context/Key.rb +0 -57
- data/lib/Context/KeyAssignment.rb +0 -31
- data/lib/Context/KeyMap.rb +0 -43
- data/spec/Context/EnumeratedType_spec.rb +0 -51
- data/spec/Context/ExecutionProxy_spec.rb +0 -28
- data/spec/Context/Gtk/Key_spec.rb +0 -45
- data/spec/Context/KeyAssignment_spec.rb +0 -26
- data/spec/Context/KeyMap_spec.rb +0 -64
- data/spec/Context/Key_spec.rb +0 -22
- data/spec/Context/Widget_spec.rb +0 -15
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
module Context
|
|
2
|
-
|
|
3
|
-
# A Proxy for carrying on conditional execution.
|
|
4
|
-
class ExecutionProxy
|
|
5
|
-
# Set the true object on which to execute and the condition to execute.
|
|
6
|
-
# NOTE: The condition is a bool. In other words it has *already*
|
|
7
|
-
# been evaluated before we get to this point.
|
|
8
|
-
def initialize(object, cond)
|
|
9
|
-
@object = object
|
|
10
|
-
@cond = cond
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
# Conditionally execute the block. If the condition is true,
|
|
14
|
-
# execute the block. Otherwise return the true object.
|
|
15
|
-
# NOTE: Crazy name is so that you don't have something with
|
|
16
|
-
# the same name and accidently call it with method_missing.
|
|
17
|
-
def execute_if_you_can(&block)
|
|
18
|
-
if @cond
|
|
19
|
-
@object.instance_eval(&block)
|
|
20
|
-
else
|
|
21
|
-
@object
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
# Conditionally evaluate the symbol. If the condition is true,
|
|
26
|
-
# evaluate the symbol. Otherwise return the true object.
|
|
27
|
-
def method_missing(symbol)
|
|
28
|
-
if @cond
|
|
29
|
-
@object.instance_eval(symbol.to_s)
|
|
30
|
-
else
|
|
31
|
-
@object
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
class Object
|
|
38
|
-
|
|
39
|
-
# Execute the block if the condition is *true*. Or if there is no
|
|
40
|
-
# block, then return the proxy object. Usually this is so you
|
|
41
|
-
# can say something like:
|
|
42
|
-
# * object.execute_if(condition).property
|
|
43
|
-
# If the condition is *false*, execution of the block, or evaluation
|
|
44
|
-
# of the property will return the original object.
|
|
45
|
-
def execute_if(cond, &block)
|
|
46
|
-
proxy = Context::ExecutionProxy.new(self, cond)
|
|
47
|
-
# Note: Wouldn't it be nice if the following could be replaced by
|
|
48
|
-
# proxy.execute_if(!block.nil) do execute_if_you_can(&block) end
|
|
49
|
-
proxy_if_block_exists = Context::ExecutionProxy.new(proxy, !block.nil?)
|
|
50
|
-
proxy_if_block_exists.execute_if_you_can() do
|
|
51
|
-
execute_if_you_can(&block)
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
# If the object is not nil, execute the block (or evaluate
|
|
56
|
-
# the property). Otherwise return nil.
|
|
57
|
-
def unless_nil(&block)
|
|
58
|
-
execute_if(!nil?, &block)
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
|
data/lib/Context/Gtk/Key.rb
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
require 'Context/Key'
|
|
2
|
-
require 'gtk2'
|
|
3
|
-
|
|
4
|
-
module Context::Gtk
|
|
5
|
-
|
|
6
|
-
class Key < Context::Key
|
|
7
|
-
|
|
8
|
-
def Key::getModifierFromEvent(event)
|
|
9
|
-
case event.state
|
|
10
|
-
when 0
|
|
11
|
-
Context::Key::Modifier::NONE
|
|
12
|
-
when Gdk::Window::CONTROL_MASK
|
|
13
|
-
Context::Key::Modifier::CONTROL
|
|
14
|
-
else
|
|
15
|
-
Context::Key::Modifier::ERROR
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def getGtkState
|
|
20
|
-
case @modifier
|
|
21
|
-
when Context::Key::Modifier::CONTROL
|
|
22
|
-
Gdk::Window::CONTROL_MASK
|
|
23
|
-
else
|
|
24
|
-
0
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def Key::getCharacterFromEvent(event)
|
|
29
|
-
Gdk::Keyval::to_name(event.keyval)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def getGtkKeyval
|
|
33
|
-
Gdk::Keyval::from_name(@character)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def Key::createFromGtkEvent(event)
|
|
37
|
-
modifier = getModifierFromEvent(event)
|
|
38
|
-
character = getCharacterFromEvent(event)
|
|
39
|
-
if((modifier != Context::Key::Modifier::ERROR) &&
|
|
40
|
-
(!character.nil?))
|
|
41
|
-
Key.new(modifier, character)
|
|
42
|
-
else
|
|
43
|
-
Key.null
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def createGtkEvent
|
|
48
|
-
event = Gdk::EventKey.new(Gdk::Event::KEY_PRESS)
|
|
49
|
-
event.set_state(getGtkState)
|
|
50
|
-
event.set_keyval(getGtkKeyval)
|
|
51
|
-
event
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
end
|
data/lib/Context/Key.rb
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
require 'Context/EnumeratedType'
|
|
2
|
-
|
|
3
|
-
module Context
|
|
4
|
-
|
|
5
|
-
# Represents a keypress. Each key is represented
|
|
6
|
-
# by a character and a modifier (e.g., the control
|
|
7
|
-
# key)
|
|
8
|
-
#
|
|
9
|
-
# One could argue that this doesn't deserve to be
|
|
10
|
-
# here at all. It is possible that some UI types
|
|
11
|
-
# won't have a keyboard at all. However given that
|
|
12
|
-
# most will operate the same way indicates that
|
|
13
|
-
# it should have some level of abstraction. I have
|
|
14
|
-
# a feeling that this is YAGNI, though. And as such
|
|
15
|
-
# it might disappear at any point.
|
|
16
|
-
class Key
|
|
17
|
-
# Types of key modifiers. Currently only
|
|
18
|
-
# control or none is supported.
|
|
19
|
-
class Modifier < EnumeratedType
|
|
20
|
-
start_at 0
|
|
21
|
-
symbols [:ERROR, :NONE, :CONTROL]
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
attr_reader :modifier, :character
|
|
25
|
-
|
|
26
|
-
def initialize(modifier, character)
|
|
27
|
-
@modifier = modifier
|
|
28
|
-
@character = character
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# A non key that can be used as an error condition.
|
|
32
|
-
# Note: Perhaps this should be a constant??? Currently
|
|
33
|
-
# key.eql?(Key.null) will work, but key == Key.null
|
|
34
|
-
# won't. FIXME
|
|
35
|
-
def Key.null
|
|
36
|
-
Key.new(Modifier.NONE, '\0')
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
# Returns true if the two keys have the same character and modifier.
|
|
40
|
-
def eql?(key)
|
|
41
|
-
(@modifier == key.modifier) && (@character == key.character)
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
# Creates a hash for the key. This is needed for the KeyMap
|
|
45
|
-
# which is implemented as a hash.
|
|
46
|
-
def hash
|
|
47
|
-
hashValue = @modifier.to_s
|
|
48
|
-
hashValue += @character
|
|
49
|
-
hashValue.hash
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
# Returns true if the key is equal to Key.null.
|
|
53
|
-
def null?
|
|
54
|
-
eql?(Key.null)
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
require 'Context/Key'
|
|
2
|
-
|
|
3
|
-
module Context
|
|
4
|
-
|
|
5
|
-
# Represents the assignment of an action to a key press
|
|
6
|
-
class KeyAssignment
|
|
7
|
-
attr_reader :action
|
|
8
|
-
|
|
9
|
-
# Creates an assignment where action will be called when key is pressed
|
|
10
|
-
def initialize(key, &action)
|
|
11
|
-
@key = key
|
|
12
|
-
@action = action
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
# Returns true if this KeyAssignment has an action assigned for key
|
|
16
|
-
def handles?(key)
|
|
17
|
-
@key.eql?(key)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
# Run the action assigned to key if there is one. Returns true if
|
|
21
|
-
# an action was run, false otherwise
|
|
22
|
-
def try(key)
|
|
23
|
-
if handles?(key)
|
|
24
|
-
@action.call
|
|
25
|
-
true
|
|
26
|
-
else
|
|
27
|
-
false
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
data/lib/Context/KeyMap.rb
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
require 'Context/Key'
|
|
2
|
-
require 'Context/KeyAssignment'
|
|
3
|
-
|
|
4
|
-
module Context
|
|
5
|
-
|
|
6
|
-
# Represents a map of key strokes to actions
|
|
7
|
-
class KeyMap
|
|
8
|
-
|
|
9
|
-
def initialize
|
|
10
|
-
@list = []
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
# Add a KeyAssignment to the map
|
|
14
|
-
def add(assignment)
|
|
15
|
-
@list.push(assignment)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
# Returns the assignment that handles this key or nil if it doesn't
|
|
19
|
-
# exist
|
|
20
|
-
def findKey(key)
|
|
21
|
-
@list.find do |a|
|
|
22
|
-
a.handles?(key)
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# Returns true if this map can handle the key. Otherwise false.
|
|
27
|
-
def handles?(key)
|
|
28
|
-
!findKey(key).nil?
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# Press the key and run the associated action, if it exits.
|
|
32
|
-
# Returns true if an action was run, false otherwise.
|
|
33
|
-
def press(key)
|
|
34
|
-
assignment = findKey(key)
|
|
35
|
-
if !assignment.nil?
|
|
36
|
-
assignment.try(key)
|
|
37
|
-
else
|
|
38
|
-
false
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
end
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
require 'Context/EnumeratedType'
|
|
2
|
-
|
|
3
|
-
module Context
|
|
4
|
-
|
|
5
|
-
class A < EnumeratedType
|
|
6
|
-
symbols [:Zero]
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
class B < EnumeratedType
|
|
10
|
-
symbols [:Zero, :One, :Two]
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
class C < EnumeratedType
|
|
14
|
-
start_at 5
|
|
15
|
-
symbols [:Five, :Six, :Seven]
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
describe EnumeratedType do
|
|
19
|
-
|
|
20
|
-
it "should start at 0 by default" do
|
|
21
|
-
A.Zero.should eql(0)
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
it "should increment by one for each value" do
|
|
25
|
-
B.Zero.should eql(0)
|
|
26
|
-
B.One.should eql(1)
|
|
27
|
-
B.Two.should eql(2)
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
it "should start at the number specified" do
|
|
31
|
-
C.Five.should eql(5)
|
|
32
|
-
C.Six.should eql(6)
|
|
33
|
-
C.Seven.should eql(7)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
it "should only respond to the names of the defined symbols" do
|
|
37
|
-
A.responds_to?(:Zero).should be(true)
|
|
38
|
-
B.responds_to?(:Zero).should be(true)
|
|
39
|
-
B.responds_to?(:One).should be(true)
|
|
40
|
-
B.responds_to?(:Two).should be(true)
|
|
41
|
-
C.responds_to?(:Five).should be(true)
|
|
42
|
-
C.responds_to?(:Six).should be(true)
|
|
43
|
-
C.responds_to?(:Seven).should be(true)
|
|
44
|
-
# This is strange that it returns nil, but there isn't any
|
|
45
|
-
# documentation of responds_to?, so I guess that's what's supposed to
|
|
46
|
-
# happen.
|
|
47
|
-
A.responds_to?(:One).should be(nil)
|
|
48
|
-
C.responds_to?(:Zero).should be(nil)
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
require 'Context/ExecutionProxy'
|
|
2
|
-
|
|
3
|
-
module Context
|
|
4
|
-
|
|
5
|
-
describe ExecutionProxy do
|
|
6
|
-
|
|
7
|
-
it "should execute methods" do
|
|
8
|
-
a = nil
|
|
9
|
-
a.unless_nil.fake.should be(nil)
|
|
10
|
-
|
|
11
|
-
a = 5
|
|
12
|
-
a.unless_nil.self.should be(5)
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
it "should execute code blocks" do
|
|
16
|
-
a = nil
|
|
17
|
-
a.unless_nil do
|
|
18
|
-
fake
|
|
19
|
-
end.should be(nil)
|
|
20
|
-
|
|
21
|
-
a = 5
|
|
22
|
-
a.unless_nil do
|
|
23
|
-
self
|
|
24
|
-
end.should be(5)
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
require 'Context/Gtk/Key'
|
|
2
|
-
|
|
3
|
-
module Context::Gtk
|
|
4
|
-
|
|
5
|
-
describe Key do
|
|
6
|
-
|
|
7
|
-
it "should have a factory method to convert from a GTK KeyPressEvent and back" do
|
|
8
|
-
event = Gdk::EventKey.new(Gdk::Event::KEY_PRESS)
|
|
9
|
-
event.set_state(Gdk::Window::CONTROL_MASK)
|
|
10
|
-
event.set_keyval(Gdk::Keyval::GDK_o)
|
|
11
|
-
|
|
12
|
-
key = Key.createFromGtkEvent(event)
|
|
13
|
-
key.should_not be_nil
|
|
14
|
-
key.should eql(Key.new(Context::Key::Modifier::CONTROL, 'o'))
|
|
15
|
-
key.getGtkState.should be_eql(Gdk::Window::CONTROL_MASK)
|
|
16
|
-
key.getGtkKeyval.should be_eql(Gdk::Keyval::GDK_o)
|
|
17
|
-
e = key.createGtkEvent
|
|
18
|
-
e.state.should be_eql(Gdk::Window::CONTROL_MASK)
|
|
19
|
-
e.keyval.should be_eql(Gdk::Keyval::GDK_o)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
it "should convert characters with no modifier and back" do
|
|
23
|
-
event = Gdk::EventKey.new(Gdk::Event::KEY_PRESS)
|
|
24
|
-
event.set_state(0)
|
|
25
|
-
event.set_keyval(Gdk::Keyval::GDK_Tab)
|
|
26
|
-
|
|
27
|
-
key = Key.createFromGtkEvent(event)
|
|
28
|
-
key.should_not be_nil
|
|
29
|
-
key.should eql(Key.new(Context::Key::Modifier::NONE, 'Tab'))
|
|
30
|
-
e = key.createGtkEvent
|
|
31
|
-
e.state.should be_eql(0)
|
|
32
|
-
e.keyval.should be_eql(Gdk::Keyval::GDK_Tab)
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
it "should create a null character if it doesn't know how to make it" do
|
|
36
|
-
event = Gdk::EventKey.new(Gdk::Event::KEY_PRESS)
|
|
37
|
-
event.set_state(Gdk::Window::META_MASK)
|
|
38
|
-
event.set_keyval(Gdk::Keyval::GDK_q)
|
|
39
|
-
|
|
40
|
-
key = Key.createFromGtkEvent(event)
|
|
41
|
-
key.should_not be_nil
|
|
42
|
-
key.should be_null
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
require 'Context/Key'
|
|
2
|
-
require 'Context/KeyAssignment'
|
|
3
|
-
|
|
4
|
-
module Context
|
|
5
|
-
|
|
6
|
-
describe KeyAssignment do
|
|
7
|
-
|
|
8
|
-
it "should have a key and a proc" do
|
|
9
|
-
run = false
|
|
10
|
-
ctlD = Key.new(Key::Modifier.CONTROL, 'd')
|
|
11
|
-
d = Key.new(Key::Modifier.NONE, 'd')
|
|
12
|
-
ka = KeyAssignment.new(ctlD) do
|
|
13
|
-
run = true
|
|
14
|
-
end
|
|
15
|
-
newCtlD = Key.new(Key::Modifier.CONTROL, 'd')
|
|
16
|
-
newD = Key.new(Key::Modifier.NONE, 'd')
|
|
17
|
-
ka.handles?(newD).should be(false)
|
|
18
|
-
ka.handles?(newCtlD).should be(true)
|
|
19
|
-
ka.try(newD).should be(false)
|
|
20
|
-
run.should be(false)
|
|
21
|
-
ka.try(newCtlD).should be(true)
|
|
22
|
-
run.should be(true)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
end
|
|
26
|
-
end
|
data/spec/Context/KeyMap_spec.rb
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
require 'Context/Key'
|
|
2
|
-
require 'Context/KeyAssignment'
|
|
3
|
-
require 'Context/KeyMap'
|
|
4
|
-
|
|
5
|
-
module Context
|
|
6
|
-
|
|
7
|
-
describe KeyMap do
|
|
8
|
-
|
|
9
|
-
before(:each) do
|
|
10
|
-
@map = KeyMap.new
|
|
11
|
-
@ctlD = Key.new(Key::Modifier.CONTROL, 'd')
|
|
12
|
-
@ctlDPressed = false
|
|
13
|
-
@ctlDAssignment = KeyAssignment.new(@ctlD) do
|
|
14
|
-
@ctlDPressed = true
|
|
15
|
-
end
|
|
16
|
-
@d = Key.new(Key::Modifier.NONE, 'd')
|
|
17
|
-
@dPressed = false
|
|
18
|
-
@dAssignment = KeyAssignment.new(@ctlD) do
|
|
19
|
-
@dPressed = true
|
|
20
|
-
end
|
|
21
|
-
@newCtlD = Key.new(Key::Modifier.CONTROL, 'd')
|
|
22
|
-
@newD = Key.new(Key::Modifier.NONE, 'd')
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
it "should be able to contain a KeyAssignment" do
|
|
26
|
-
@map.handles?(@newCtlD).should be(false)
|
|
27
|
-
@map.handles?(@newD).should be(false)
|
|
28
|
-
@map.add(@ctlDAssignment)
|
|
29
|
-
@map.handles?(@newCtlD).should be(true)
|
|
30
|
-
@map.handles?(@newD).should be(false)
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
it "should be able to contain many KeyAssignments" do
|
|
34
|
-
@map.handles?(@newCtlD).should be(false)
|
|
35
|
-
@map.handles?(@newD).should be(false)
|
|
36
|
-
@map.add(@ctlDAssignment)
|
|
37
|
-
@map.handles?(@newCtlD).should be(true)
|
|
38
|
-
@map.handles?(@newD).should be(false)
|
|
39
|
-
@map.add(@dAssignment)
|
|
40
|
-
@map.handles?(@newD).should be(false)
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
it "should be able to press a key" do
|
|
44
|
-
@map.add(@ctlDAssignment)
|
|
45
|
-
@map.add(@dAssignment)
|
|
46
|
-
@ctlDPressed.should be(false)
|
|
47
|
-
@dPressed.should be(false)
|
|
48
|
-
@map.press(@newCtlD).should be(true)
|
|
49
|
-
@ctlDPressed.should be(true)
|
|
50
|
-
@dPressed.should be(false)
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
it "should return false if a non-handled key is pressed" do
|
|
54
|
-
@map.add(@ctlDAssignment)
|
|
55
|
-
@ctlDPressed.should be(false)
|
|
56
|
-
@dPressed.should be(false)
|
|
57
|
-
@map.handles?(@d).should be(false)
|
|
58
|
-
@map.press(@d).should be(false)
|
|
59
|
-
@dPressed.should be(false)
|
|
60
|
-
@ctlDPressed.should be(false)
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
end
|
|
64
|
-
end
|