1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
# frozen_string_literal: true
module Axlsx
# Selection options for worksheet panes.
#
# @note The recommended way to manage the selection pane options is via SheetView#add_selection
# @see SheetView#add_selection
class Selection
include Axlsx::OptionsParser
include Axlsx::SerializedAttributes
# Creates a new {Selection} object
# @option options [Cell, String] active_cell Active Cell Location
# @option options [Integer] active_cell_id Active Cell Index
# @option options [Symbol] pane Pane
# @option options [String] sqref Sequence of References
def initialize(options = {})
@active_cell = @active_cell_id = @pane = @sqref = nil
parse_options options
end
serializable_attributes :active_cell, :active_cell_id, :pane, :sqref
# Active Cell Location
# Location of the active cell.
# @see type
# @return [String]
# default nil
attr_reader :active_cell
# Active Cell Index
# 0-based index of the range reference (in the array of references listed in sqref)
# containing the active cell. Only used when the selection in sqref is not contiguous.
# Therefore, this value needs to be aware of the order in which the range references are
# written in sqref.
# When this value is out of range then activeCell can be used.
# @see type
# @return [Integer]
# default nil
attr_reader :active_cell_id
# Pane
# The pane to which this selection belongs.
# Options are
# * bottom_left: Bottom left pane, when both vertical and horizontal
# splits are applied. This value is also used when only
# a horizontal split has been applied, dividing the pane
# into upper and lower regions. In that case, this value
# specifies the bottom pane.
# * bottom_right: Bottom right pane, when both vertical and horizontal
# splits are applied.
# * top_left: Top left pane, when both vertical and horizontal splits
# are applied. This value is also used when only a horizontal
# split has been applied, dividing the pane into upper and lower
# regions. In that case, this value specifies the top pane.
# This value is also used when only a vertical split has
# been applied, dividing the pane into right and left
# regions. In that case, this value specifies the left pane
# * top_right: Top right pane, when both vertical and horizontal
# splits are applied. This value is also used when only
# a vertical split has been applied, dividing the pane
# into right and left regions. In that case, this value
# specifies the right pane.
# @see type
# @return [Symbol]
# default nil
attr_reader :pane
# Sequence of References
# Range of the selection. Can be non-contiguous set of ranges.
# @see type
# @return [String]
# default nil
attr_reader :sqref
# @see active_cell
def active_cell=(v)
cell = (v.instance_of?(Axlsx::Cell) ? v.r_abs : v)
Axlsx.validate_string(cell)
@active_cell = cell
end
# @see active_cell_id
def active_cell_id=(v); Axlsx.validate_unsigned_int(v); @active_cell_id = v end
# @see pane
def pane=(v)
Axlsx.validate_pane_type(v)
@pane = Axlsx.camel(v, false)
end
# @see sqref
def sqref=(v); Axlsx.validate_string(v); @sqref = v end
# Serializes the data validation
# @param [String] str
# @return [String]
def to_xml_string(str = +'')
serialized_tag 'selection', str
end
end
end
|