atspi 0.9.0 → 0.9.1
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 +4 -4
- data/lib/atspi/accessible.rb +2 -6
- data/lib/atspi/accessible/children.rb +85 -0
- data/lib/atspi/accessible/children/selected.rb +35 -0
- data/lib/atspi/accessible/descendants.rb +32 -1
- data/lib/atspi/accessible/selectable.rb +4 -4
- data/lib/atspi/accessible/table/cell/columns.rb +3 -0
- data/lib/atspi/accessible/table/cell/rows.rb +3 -0
- data/lib/atspi/accessible/table/columns.rb +4 -1
- data/lib/atspi/accessible/table/columns/selected.rb +4 -1
- data/lib/atspi/accessible/table/rows.rb +4 -1
- data/lib/atspi/accessible/table/rows/selected.rb +4 -1
- data/lib/atspi/collection.rb +1 -1
- data/lib/atspi/requires.rb +1 -0
- data/lib/atspi/selectable_collection.rb +4 -1
- data/lib/atspi/selectable_collection/selected.rb +6 -2
- data/lib/atspi/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ead4bf4d229628674333659b98aee3247c4547bd
|
4
|
+
data.tar.gz: 6e89ecf3512272b48d05193e88db0ef0ff664583
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 76dfd023c4e90060c577f082046fc370e3b42815365ec7492112afd1001c90da363082d108c56c1fc341b1bafede670cf99cf76d90421c14a56ba7f55832e0ed
|
7
|
+
data.tar.gz: adf03361bc2c38df8d3318cc78efd7c98787bb108ac964e286d8c5f2d77f888c5ffa682923477da5b5ddbf53829f38b958f6eba77a952591cfe35e93644efaf3
|
data/lib/atspi/accessible.rb
CHANGED
@@ -149,16 +149,12 @@ module ATSPI
|
|
149
149
|
Children.new(@native)
|
150
150
|
end
|
151
151
|
|
152
|
-
# @return [Descendants
|
152
|
+
# @return [Descendants] its descendants. The collection will be empty if it
|
153
153
|
# does not implement the {https://developer.gnome.org/libatspi/stable/AtspiAccessible.html#atspi-accessible-get-collection collection interface}
|
154
154
|
#
|
155
155
|
# @see https://developer.gnome.org/libatspi/stable/AtspiAccessible.html#atspi-accessible-get-collection atspi_accessible_get_collection
|
156
156
|
def descendants
|
157
|
-
|
158
|
-
Descendants.new(@native)
|
159
|
-
else
|
160
|
-
[]
|
161
|
-
end
|
157
|
+
Descendants.new(@native)
|
162
158
|
end
|
163
159
|
|
164
160
|
# @return [Accessible,nil] its descendant found at the given path
|
@@ -1,6 +1,9 @@
|
|
1
1
|
module ATSPI
|
2
2
|
# Wraps the children part of libatspi's AtspiAccessible[https://developer.gnome.org/libatspi/stable/AtspiAccessible.html]
|
3
3
|
# and parts of AtspiSelection[https://developer.gnome.org/libatspi/stable/libatspi-atspi-selection.html].
|
4
|
+
#
|
5
|
+
# Instance are enumerables supporting item access and can be treated more or
|
6
|
+
# less like an array.
|
4
7
|
class Accessible::Children
|
5
8
|
include SelectableCollection
|
6
9
|
|
@@ -28,5 +31,87 @@ module ATSPI
|
|
28
31
|
@native.child_count
|
29
32
|
end
|
30
33
|
# @!endgroup
|
34
|
+
|
35
|
+
# @!group Selection
|
36
|
+
# Checks if the accessible the children belong to implements the selection
|
37
|
+
# interface.
|
38
|
+
#
|
39
|
+
# @return [true,false]
|
40
|
+
#
|
41
|
+
# @see https://developer.gnome.org/libatspi/stable/AtspiAccessible.html#atspi-accessible-get-selection atspi_accessible_get_selection
|
42
|
+
def selectable?
|
43
|
+
not @native.selection_iface.nil?
|
44
|
+
end
|
45
|
+
|
46
|
+
# @return [Selected,[]] its selected subset. It will be an empty array if
|
47
|
+
# children are not selectable.
|
48
|
+
def selected
|
49
|
+
if selectable?
|
50
|
+
Selected.new(@native)
|
51
|
+
else
|
52
|
+
[]
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# Tries to select all children
|
57
|
+
#
|
58
|
+
# @return [true,false] indicates success
|
59
|
+
#
|
60
|
+
# @see https://developer.gnome.org/libatspi/stable/libatspi-atspi-selection.html#atspi-selection-select-all atspi_selection_select_all
|
61
|
+
def select_all
|
62
|
+
selectable? and @native.select_all
|
63
|
+
end
|
64
|
+
|
65
|
+
# Tries to deselect all children
|
66
|
+
#
|
67
|
+
# @return [true,false] indicates success
|
68
|
+
#
|
69
|
+
# @see https://developer.gnome.org/libatspi/stable/libatspi-atspi-selection.html#atspi-selection-clear-selection atspi_selection_clear_selection
|
70
|
+
def deselect_all
|
71
|
+
selectable? and @native.clear_selection
|
72
|
+
end
|
73
|
+
# @!endgroup
|
74
|
+
|
75
|
+
# @!group Filter
|
76
|
+
# @note (see Descendants#where)
|
77
|
+
# @see (see Descendants#where)
|
78
|
+
# @return [Descendants] the children collection as filtered descendants
|
79
|
+
# collection.
|
80
|
+
# @overload (see Descendants#where)
|
81
|
+
def where(*args)
|
82
|
+
Accessible::Descendants.new(@native).recursive(false).where(*args)
|
83
|
+
end
|
84
|
+
# @!endgroup
|
85
|
+
|
86
|
+
# @!group Options
|
87
|
+
# @param (see Descendants#sort_by)
|
88
|
+
# @return [Descendants] the children collection as sorted descendants
|
89
|
+
# collection.
|
90
|
+
# @example (see Descendants#sort_by)
|
91
|
+
# @see (see Descendants#sort_by)
|
92
|
+
def sort_by(order)
|
93
|
+
Accessible::Descendants.new(@native).recursive(false).sort_by(order)
|
94
|
+
end
|
95
|
+
|
96
|
+
# @param (see Descendants#limit_to)
|
97
|
+
# @return [Descendants] the children collection as limited descendants
|
98
|
+
# collection.
|
99
|
+
# @see (see Descendants#limit_to)
|
100
|
+
def limit_to(limit)
|
101
|
+
Accessible::Descendants.new(@native).recursive(false).limit_to(limit)
|
102
|
+
end
|
103
|
+
|
104
|
+
# @param (see Descendants#recursive)
|
105
|
+
# @return [Descendants,self] self if +recursive+ is set to +false+. A
|
106
|
+
# collection of all descendants if +recursive+ is set to +true+
|
107
|
+
# @see (see Descendants#recursive)
|
108
|
+
def recursive(recursive = true)
|
109
|
+
if recursive
|
110
|
+
Accessible::Descendants.new(@native)
|
111
|
+
else
|
112
|
+
self
|
113
|
+
end
|
114
|
+
end
|
115
|
+
# @!endgroup
|
31
116
|
end
|
32
117
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module ATSPI
|
2
|
+
# Wraps libatspi's AtspiSelection[https://developer.gnome.org/libatspi/stable/libatspi-atspi-selection.html]
|
3
|
+
# together with parts of {Selectable} and {Children}
|
4
|
+
#
|
5
|
+
# Instance are enumerables supporting item access and can be treated more or
|
6
|
+
# less like an array.
|
7
|
+
class Accessible::Children::Selected
|
8
|
+
include SelectableCollection::Selected
|
9
|
+
|
10
|
+
# @api private
|
11
|
+
def initialize(native)
|
12
|
+
@native = native
|
13
|
+
end
|
14
|
+
|
15
|
+
# @!group Enumerable interface
|
16
|
+
# @param idx [Integer]
|
17
|
+
#
|
18
|
+
# @return [Accessible] its child at index +idx+
|
19
|
+
#
|
20
|
+
# @see https://developer.gnome.org/libatspi/stable/libatspi-atspi-selection.html#atspi-selection-get-selected-child atspi_selection_get_selected_child
|
21
|
+
def at(idx)
|
22
|
+
super do |mapped_idx|
|
23
|
+
Accessible.new(@native.selected_child(mapped_idx))
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# @return [Integer] its number of children
|
28
|
+
#
|
29
|
+
# @see https://developer.gnome.org/libatspi/stable/libatspi-atspi-selection.html#atspi-selection-get-n-selected-children atspi_selection_get_n_selected_children
|
30
|
+
def count
|
31
|
+
@native.n_selected_children
|
32
|
+
end
|
33
|
+
# @!endgroup
|
34
|
+
end
|
35
|
+
end
|
@@ -22,6 +22,14 @@ module ATSPI
|
|
22
22
|
# In essence, it wraps libatspi's AtspiCollection[https://developer.gnome.org/libatspi/stable/libatspi-atspi-collection.html] and
|
23
23
|
# AtspiMatchRule[https://developer.gnome.org/libatspi/stable/AtspiMatchRule.html]
|
24
24
|
class Accessible::Descendants
|
25
|
+
extend Forwardable
|
26
|
+
# Delegate all methods of arrays directly to the array representation so
|
27
|
+
# methods available otherwise (like #select through Kernel) do not
|
28
|
+
# interfere
|
29
|
+
Array.instance_methods(false).each do |method|
|
30
|
+
delegate method => :to_a
|
31
|
+
end
|
32
|
+
|
25
33
|
# @api private
|
26
34
|
def initialize(native)
|
27
35
|
@native = native
|
@@ -240,8 +248,10 @@ module ATSPI
|
|
240
248
|
|
241
249
|
# @!group Access
|
242
250
|
# @return [Array<Accessible>] the descendants according to the configured
|
243
|
-
# filters and options.
|
251
|
+
# filters and options. The collection will be empty if the accessible
|
252
|
+
# does not implement the {https://developer.gnome.org/libatspi/stable/AtspiAccessible.html#atspi-accessible-get-collection collection interface}
|
244
253
|
def to_a
|
254
|
+
return [] unless @native.collection_iface
|
245
255
|
match_rule = Libatspi::MatchRule.new(*@filters[:state], *@filters[:attributes],
|
246
256
|
*@filters[:role], *@filters[:interface], @options.inverted?)
|
247
257
|
matches = @native.matches(match_rule, *@options).to_a
|
@@ -256,6 +266,27 @@ module ATSPI
|
|
256
266
|
end
|
257
267
|
# @!endgroup
|
258
268
|
|
269
|
+
# @!group Selection
|
270
|
+
# @return [Array<Accessible>] its selected subset.
|
271
|
+
def selected
|
272
|
+
select(&:selected?)
|
273
|
+
end
|
274
|
+
|
275
|
+
# Tries to select all descendants in the collection
|
276
|
+
#
|
277
|
+
# @return [true,false] indicates if *all* are now selected
|
278
|
+
def select_all
|
279
|
+
map(&:select).all?
|
280
|
+
end
|
281
|
+
|
282
|
+
# Tries to deselect all descendants in the collection
|
283
|
+
#
|
284
|
+
# @return [true,false] indicates if *all* are now deselected
|
285
|
+
def deselect_all
|
286
|
+
map(&:deselect).all?
|
287
|
+
end
|
288
|
+
# @!endgroup
|
289
|
+
|
259
290
|
# @!group Representations
|
260
291
|
# @return [String] itself as an inspectable string
|
261
292
|
def inspect
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class ATSPI::Accessible
|
2
2
|
# Wraps libatspi's AtspiSelection[https://developer.gnome.org/libatspi/stable/libatspi-atspi-selection.html]
|
3
|
-
# together with parts of {Children}
|
3
|
+
# together with parts of {Children} and {Children::Selected}
|
4
4
|
module Selectable
|
5
5
|
# @!group Attributes & States
|
6
6
|
# Checks if it can be selected. Accessibles which parent's native
|
@@ -9,7 +9,7 @@ class ATSPI::Accessible
|
|
9
9
|
#
|
10
10
|
# @return [true, false]
|
11
11
|
def selectable?
|
12
|
-
|
12
|
+
parent.children.selectable?
|
13
13
|
end
|
14
14
|
# @!endgroup
|
15
15
|
|
@@ -24,12 +24,12 @@ class ATSPI::Accessible
|
|
24
24
|
end
|
25
25
|
|
26
26
|
# Deselects it
|
27
|
-
# @return [true, false] indicating success of the operation. +
|
27
|
+
# @return [true, false] indicating success of the operation. +false+ if its
|
28
28
|
# parent does not implement the {https://developer.gnome.org/libatspi/stable/AtspiAccessible.html#atspi-accessible-get-selection selection interface}.
|
29
29
|
#
|
30
30
|
# @see https://developer.gnome.org/libatspi/stable/libatspi-atspi-selection.html#atspi-selection-deselect-child atspi_selection_deselect_child
|
31
31
|
def deselect
|
32
|
-
|
32
|
+
selectable? and parent.__send__(:native).deselect_child(index_in_parent)
|
33
33
|
end
|
34
34
|
# @!endgroup
|
35
35
|
|
@@ -1,6 +1,9 @@
|
|
1
1
|
module ATSPI
|
2
2
|
class Accessible::Table
|
3
|
-
# Represents all columns in a {Table}
|
3
|
+
# Represents all columns in a {Table}.
|
4
|
+
#
|
5
|
+
# Instance are enumerables supporting item access and can be treated more or
|
6
|
+
# less like an array.
|
4
7
|
class Columns
|
5
8
|
include SelectableCollection
|
6
9
|
|
@@ -1,6 +1,9 @@
|
|
1
1
|
module ATSPI
|
2
2
|
class Accessible::Table
|
3
|
-
# Represents all selected columns of a {Table}
|
3
|
+
# Represents all selected columns of a {Table}.
|
4
|
+
#
|
5
|
+
# Instance are enumerables supporting item access and can be treated more or
|
6
|
+
# less like an array.
|
4
7
|
class Columns::Selected
|
5
8
|
include SelectableCollection::Selected
|
6
9
|
|
@@ -1,6 +1,9 @@
|
|
1
1
|
module ATSPI
|
2
2
|
class Accessible::Table
|
3
|
-
# Represents all rows in a {Table}
|
3
|
+
# Represents all rows in a {Table}.
|
4
|
+
#
|
5
|
+
# Instance are enumerables supporting item access and can be treated more or
|
6
|
+
# less like an array.
|
4
7
|
class Rows
|
5
8
|
include SelectableCollection
|
6
9
|
|
@@ -1,6 +1,9 @@
|
|
1
1
|
module ATSPI
|
2
2
|
class Accessible::Table
|
3
|
-
# Represents all selected rows of a {Table}
|
3
|
+
# Represents all selected rows of a {Table}.
|
4
|
+
#
|
5
|
+
# Instance are enumerables supporting item access and can be treated more or
|
6
|
+
# less like an array.
|
4
7
|
class Rows::Selected
|
5
8
|
include SelectableCollection::Selected
|
6
9
|
|
data/lib/atspi/collection.rb
CHANGED
@@ -2,7 +2,7 @@ module ATSPI
|
|
2
2
|
# Included in classes representing a collection that can be iterated over.
|
3
3
|
# A Collection is an Enumerable adjusted to the what we can efficiently get
|
4
4
|
# from libatspi. In particular, it provides access to items by index and
|
5
|
-
# from the end of the collection.
|
5
|
+
# from the end of the collection and can be treated like an array.
|
6
6
|
module Collection
|
7
7
|
include Enumerable
|
8
8
|
# @!group Enumerable interface
|
data/lib/atspi/requires.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
module ATSPI
|
2
|
-
# Included in classes representing a collection having selectable items
|
2
|
+
# Included in classes representing a collection having selectable items.
|
3
|
+
#
|
4
|
+
# Instance are enumerables supporting item access and can be treated more or
|
5
|
+
# less like an array.
|
3
6
|
module SelectableCollection
|
4
7
|
include Collection
|
5
8
|
|
@@ -1,5 +1,9 @@
|
|
1
1
|
module ATSPI
|
2
|
-
# Included in classes representing the selected subset of a selectable
|
2
|
+
# Included in classes representing the selected subset of a selectable
|
3
|
+
# collection.
|
4
|
+
#
|
5
|
+
# Instance are enumerables supporting item access and can be treated more or
|
6
|
+
# less like an array.
|
3
7
|
module SelectableCollection::Selected
|
4
8
|
include Collection
|
5
9
|
|
@@ -14,7 +18,7 @@ module ATSPI
|
|
14
18
|
# @!group Representation
|
15
19
|
# @return [String] instance as inspectable string
|
16
20
|
def inspect
|
17
|
-
indices = self.indices
|
21
|
+
indices = self.__send__(:indices, limit: 5).inspect
|
18
22
|
indices[-1] = ", …]" if count > 5
|
19
23
|
"#<#{self.class.name}:0x#{'%x14' % __id__} @count=#{count} @indices=#{indices}>"
|
20
24
|
end
|
data/lib/atspi/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: atspi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christopher Aue
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gir_ffi
|
@@ -86,6 +86,7 @@ files:
|
|
86
86
|
- lib/atspi/accessible.rb
|
87
87
|
- lib/atspi/accessible/action.rb
|
88
88
|
- lib/atspi/accessible/children.rb
|
89
|
+
- lib/atspi/accessible/children/selected.rb
|
89
90
|
- lib/atspi/accessible/descendants.rb
|
90
91
|
- lib/atspi/accessible/descendants/attribute_filter.rb
|
91
92
|
- lib/atspi/accessible/descendants/interface_filter.rb
|