context 0.0.16 → 0.0.22
Sign up to get free protection for your applications and to get access to all the features.
- 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
|