Class: Vedeu::Geometry::Move Private
- Inherits:
-
Object
- Object
- Vedeu::Geometry::Move
- Extended by:
- Forwardable
- Defined in:
- lib/vedeu/geometry/move.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Move an interface/view via changing its geometry.
When moving an interface/view;
1) Reset the alignment and maximised states to false;
it wont be aligned to a side if moved, and cannot be moved
if maximised.
2) Get the current coordinates of the interface, then: 3) Override the attributes with the new coordinates for
desired movement; these are usually +/- 1 of the current
state, depending on direction.
Instance Attribute Summary collapse
- #direction ⇒ Symbol readonly protected private
- #name ⇒ String|Symbol readonly protected private
- #offset ⇒ Symbol readonly protected private
Class Method Summary collapse
-
.move(attributes = {}) ⇒ Object
private
See #move.
Instance Method Summary collapse
- #defaults ⇒ Hash<Symbol => Fixnum|String|Symbol> private private
- #direction? ⇒ Boolean private private
-
#down ⇒ Hash<Symbol => Fixnum]
private
private
Moves the geometry down by the offset.
- #event ⇒ Hash<Symbol => Symbol> private private
- #geometry ⇒ Vedeu::Geometry::Geometry private private
-
#initialize(attributes = {}) ⇒ Vedeu::Geometry::Move
constructor
private
Returns a new instance of Vedeu::Geometry::Move.
-
#left ⇒ Hash<Symbol => Fixnum]
private
private
Moves the geometry left by the offset.
- #move ⇒ FalseClass|Vedeu::Geometry::Geometry private
- #new_attributes ⇒ Hash<Symbol => Boolean|String|Symbol> private private
-
#origin ⇒ Hash<Symbol => Fixnum]
private
private
Moves the geometry to the top left of the terminal.
-
#refresh! ⇒ void
private
private
Refresh the screen after moving.
-
#right ⇒ Hash<Symbol => Fixnum]
private
private
Moves the geometry right by the offset.
-
#unalign_unmaximise ⇒ Hash<Symbol => Boolean|Symbol]
private
private
Hash<Symbol => Boolean|Symbol].
-
#up ⇒ Hash<Symbol => Fixnum]
private
private
Moves the geometry up by the offset.
-
#update_cursor! ⇒ void
private
private
Refresh the cursor after moving.
- #valid? ⇒ Boolean private private
- #valid_down? ⇒ Boolean private private
- #valid_left? ⇒ Boolean private private
- #valid_right? ⇒ Boolean private private
- #valid_up? ⇒ Boolean private private
Constructor Details
#initialize(attributes = {}) ⇒ Vedeu::Geometry::Move
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of Vedeu::Geometry::Move.
46 47 48 49 50 |
# File 'lib/vedeu/geometry/move.rb', line 46 def initialize(attributes = {}) defaults.merge!(attributes).each do |key, value| instance_variable_set("@#{key}", value || defaults.fetch(key)) end end |
Instance Attribute Details
#direction ⇒ Symbol (readonly, protected)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
66 67 68 |
# File 'lib/vedeu/geometry/move.rb', line 66 def direction @direction end |
#name ⇒ String|Symbol (readonly, protected)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
70 71 72 |
# File 'lib/vedeu/geometry/move.rb', line 70 def name @name end |
#offset ⇒ Symbol (readonly, protected)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
74 75 76 |
# File 'lib/vedeu/geometry/move.rb', line 74 def offset @offset end |
Class Method Details
.move(attributes = {}) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns See #move.
31 32 33 |
# File 'lib/vedeu/geometry/move.rb', line 31 def self.move(attributes = {}) new(attributes).move end |
Instance Method Details
#defaults ⇒ Hash<Symbol => Fixnum|String|Symbol> (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
79 80 81 82 83 84 85 |
# File 'lib/vedeu/geometry/move.rb', line 79 def defaults { direction: :none, name: '', offset: 1, } end |
#direction? ⇒ Boolean (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
88 89 90 |
# File 'lib/vedeu/geometry/move.rb', line 88 def direction? direction != :none end |
#down ⇒ Hash<Symbol => Fixnum] (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Moves the geometry down by the offset.
95 96 97 98 99 100 |
# File 'lib/vedeu/geometry/move.rb', line 95 def down { y: y + offset, yn: yn + offset, } end |
#event ⇒ Hash<Symbol => Symbol> (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
103 104 105 106 107 108 109 110 111 |
# File 'lib/vedeu/geometry/move.rb', line 103 def event { down: :_cursor_down_, left: :_cursor_left_, origin: :_cursor_origin_, right: :_cursor_right_, up: :_cursor_up_, }[direction] end |
#geometry ⇒ Vedeu::Geometry::Geometry (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
114 115 116 |
# File 'lib/vedeu/geometry/move.rb', line 114 def geometry Vedeu.geometries.by_name(name) end |
#left ⇒ Hash<Symbol => Fixnum] (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Moves the geometry left by the offset.
121 122 123 124 125 126 |
# File 'lib/vedeu/geometry/move.rb', line 121 def left { x: x - offset, xn: xn - offset, } end |
#move ⇒ FalseClass|Vedeu::Geometry::Geometry
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
53 54 55 56 57 58 59 60 |
# File 'lib/vedeu/geometry/move.rb', line 53 def move return false unless valid? Vedeu::Geometry::Geometry.store(new_attributes) do update_cursor! refresh! end end |
#new_attributes ⇒ Hash<Symbol => Boolean|String|Symbol> (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
129 130 131 |
# File 'lib/vedeu/geometry/move.rb', line 129 def new_attributes geometry.attributes.merge!(unalign_unmaximise).merge!(send(direction)) end |
#origin ⇒ Hash<Symbol => Fixnum] (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Moves the geometry to the top left of the terminal.
136 137 138 139 140 141 142 143 |
# File 'lib/vedeu/geometry/move.rb', line 136 def origin { x: 1, xn: (xn - x + 1), y: 1, yn: (yn - y + 1), } end |
#refresh! ⇒ void (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
This method returns an undefined value.
Refresh the screen after moving.
148 149 150 |
# File 'lib/vedeu/geometry/move.rb', line 148 def refresh! Vedeu.trigger(:_movement_refresh_, name) end |
#right ⇒ Hash<Symbol => Fixnum] (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Moves the geometry right by the offset.
155 156 157 158 159 160 |
# File 'lib/vedeu/geometry/move.rb', line 155 def right { x: x + offset, xn: xn + offset, } end |
#unalign_unmaximise ⇒ Hash<Symbol => Boolean|Symbol] (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns Hash<Symbol => Boolean|Symbol].
163 164 165 166 167 168 169 |
# File 'lib/vedeu/geometry/move.rb', line 163 def unalign_unmaximise { horizontal_alignment: :none, maximised: false, vertical_alignment: :none, } end |
#up ⇒ Hash<Symbol => Fixnum] (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Moves the geometry up by the offset.
174 175 176 177 178 179 |
# File 'lib/vedeu/geometry/move.rb', line 174 def up { y: y - offset, yn: yn - offset, } end |
#update_cursor! ⇒ void (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
This method returns an undefined value.
Refresh the cursor after moving.
184 185 186 |
# File 'lib/vedeu/geometry/move.rb', line 184 def update_cursor! Vedeu.trigger(event, name) end |
#valid? ⇒ Boolean (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
189 190 191 192 193 194 195 196 197 |
# File 'lib/vedeu/geometry/move.rb', line 189 def valid? { down: valid_down?, left: valid_left?, origin: true, right: valid_right?, up: valid_up?, }.fetch(direction, false) end |
#valid_down? ⇒ Boolean (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
200 201 202 |
# File 'lib/vedeu/geometry/move.rb', line 200 def valid_down? yn + offset <= Vedeu.height end |
#valid_left? ⇒ Boolean (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
205 206 207 |
# File 'lib/vedeu/geometry/move.rb', line 205 def valid_left? x - offset >= 1 end |
#valid_right? ⇒ Boolean (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
210 211 212 |
# File 'lib/vedeu/geometry/move.rb', line 210 def valid_right? xn + offset <= Vedeu.width end |
#valid_up? ⇒ Boolean (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
215 216 217 |
# File 'lib/vedeu/geometry/move.rb', line 215 def valid_up? y - offset >= 1 end |