Class: Vedeu::Geometry::Move Private

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
Repositories::Defaults
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

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#directionSymbol (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.

Returns The direction to move; one of: :down, :left, :origin, :right, :up.

Returns:

  • (Symbol)

    The direction to move; one of: :down, :left, :origin, :right, :up.



51
52
53
# File 'lib/vedeu/geometry/move.rb', line 51

def direction
  @direction
end

#nameString|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.

Returns The name of the interface/view.

Returns:

  • (String|Symbol)

    The name of the interface/view.



55
56
57
# File 'lib/vedeu/geometry/move.rb', line 55

def name
  @name
end

#offsetSymbol (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.

Returns The number of columns or rows to move by.

Returns:

  • (Symbol)

    The number of columns or rows to move by.



59
60
61
# File 'lib/vedeu/geometry/move.rb', line 59

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.

Parameters:

  • attributes (defaults to: {})

    See #initialize

Returns:

  • See #move



32
33
34
# File 'lib/vedeu/geometry/move.rb', line 32

def self.move(attributes = {})
  new(attributes).move
end

Instance Method Details

#defaultsHash<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.

Returns:

  • (Hash<Symbol => Fixnum|String|Symbol>)


64
65
66
67
68
69
70
# File 'lib/vedeu/geometry/move.rb', line 64

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.

Returns:

  • (Boolean)


73
74
75
# File 'lib/vedeu/geometry/move.rb', line 73

def direction?
  direction != :none
end

#downHash<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.

Returns:

  • (Hash<Symbol => Fixnum])

    Hash<Symbol => Fixnum]



80
81
82
83
84
85
# File 'lib/vedeu/geometry/move.rb', line 80

def down
  {
    y: y + offset,
    yn: yn + offset,
  }
end

#eventHash<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.

Returns:

  • (Hash<Symbol => Symbol>)


88
89
90
91
92
93
94
95
96
# File 'lib/vedeu/geometry/move.rb', line 88

def event
  {
    down:   :_cursor_down_,
    left:   :_cursor_left_,
    origin: :_cursor_origin_,
    right:  :_cursor_right_,
    up:     :_cursor_up_,
  }[direction]
end

#geometryVedeu::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.



99
100
101
# File 'lib/vedeu/geometry/move.rb', line 99

def geometry
  Vedeu.geometries.by_name(name)
end

#initialize(attributes = {}) ⇒ void Originally defined in module Repositories::Defaults

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.

Note:

If a particular key is missing from the attributes parameter, then it is added with the respective value from #defaults.

Returns a new instance of the class including this module.

Parameters:

  • attributes (Hash) (defaults to: {})

#leftHash<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.

Returns:

  • (Hash<Symbol => Fixnum])

    Hash<Symbol => Fixnum]



106
107
108
109
110
111
# File 'lib/vedeu/geometry/move.rb', line 106

def left
  {
    x: x - offset,
    xn: xn - offset,
  }
end

#moveFalseClass|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.

Returns:



37
38
39
40
41
42
43
44
# File 'lib/vedeu/geometry/move.rb', line 37

def move
  return false unless valid?

  Vedeu::Geometry::Geometry.store(new_attributes) do
    update_cursor!
    refresh!
  end
end

#new_attributesHash<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.

Returns:

  • (Hash<Symbol => Boolean|String|Symbol>)


114
115
116
# File 'lib/vedeu/geometry/move.rb', line 114

def new_attributes
  geometry.attributes.merge!(unalign_unmaximise).merge!(send(direction))
end

#originHash<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.

Returns:

  • (Hash<Symbol => Fixnum])

    Hash<Symbol => Fixnum]



121
122
123
124
125
126
127
128
# File 'lib/vedeu/geometry/move.rb', line 121

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.



133
134
135
# File 'lib/vedeu/geometry/move.rb', line 133

def refresh!
  Vedeu.trigger(:_movement_refresh_, name)
end

#rightHash<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.

Returns:

  • (Hash<Symbol => Fixnum])

    Hash<Symbol => Fixnum]



140
141
142
143
144
145
# File 'lib/vedeu/geometry/move.rb', line 140

def right
  {
    x: x + offset,
    xn: xn + offset,
  }
end

#unalign_unmaximiseHash<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].

Returns:

  • (Hash<Symbol => Boolean|Symbol])

    Hash<Symbol => Boolean|Symbol]



148
149
150
151
152
153
154
# File 'lib/vedeu/geometry/move.rb', line 148

def unalign_unmaximise
  {
    horizontal_alignment: :none,
    maximised:            false,
    vertical_alignment:   :none,
  }
end

#upHash<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.

Returns:

  • (Hash<Symbol => Fixnum])

    Hash<Symbol => Fixnum]



159
160
161
162
163
164
# File 'lib/vedeu/geometry/move.rb', line 159

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.



169
170
171
# File 'lib/vedeu/geometry/move.rb', line 169

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.

Returns:

  • (Boolean)


174
175
176
177
178
179
180
181
182
# File 'lib/vedeu/geometry/move.rb', line 174

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.

Returns:

  • (Boolean)


185
186
187
# File 'lib/vedeu/geometry/move.rb', line 185

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.

Returns:

  • (Boolean)


190
191
192
# File 'lib/vedeu/geometry/move.rb', line 190

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.

Returns:

  • (Boolean)


195
196
197
# File 'lib/vedeu/geometry/move.rb', line 195

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.

Returns:

  • (Boolean)


200
201
202
# File 'lib/vedeu/geometry/move.rb', line 200

def valid_up?
  y - offset >= 1
end